NEWS
[gelöst] Fehler bei der Verbindung zu Websocket
-
Systemdata Bitte Ausfüllen Hardwaresystem: Pi4 Arbeitsspeicher: 4GB Festplattenart: SD-Karte Betriebssystem: Raspian Node-Version: 14.21.1 Nodejs-Version: 14.21.1 NPM-Version: 6.14.7 Installationsart: Skript Image genutzt: Nein Hallo zusammen,
ich versuche grade eine eigene kleine Anwendung (Javascript/TypeScript) gegen ioBroker zu schalten.
Ich nutze um inital die Daten abzurufen den Rest-Adapter, aber um aktuell zu sein, und um die States zu ändern, nutze ich den im Web-Adapter integrierten WebSocket-Server.Warum auch immer hatte ich bis gestern keine Probleme mit dem WebSocket, jetzt neu ist aber, dass, wenn ich die Verbindung aufbaue, der http-server sich verabschiedet und neu startet.
Folgende Fehlermeldung finde ich im Log:
2023-01-11 10:32:54.679 - info: admin.0 (326281) <== Disconnect system.user.admin from ::ffff:192.168.2.48 ownview2 2023-01-11 10:32:54.758 - info: admin.0 (326281) ==> Connected system.user.admin from ::ffff:192.168.2.48 2023-01-11 10:32:54.800 - error: admin.0 (326281) uncaught exception: Cannot read property '0' of undefined 2023-01-11 10:32:54.801 - error: admin.0 (326281) TypeError: Cannot read property '0' of undefined at /opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:115 at Array.forEach (<anonymous>) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:83) at processImmediate (internal/timers.js:464:21) 2023-01-11 10:32:54.801 - error: admin.0 (326281) Cannot read property '0' of undefined 2023-01-11 10:32:54.835 - info: admin.0 (326281) terminating http server on port 8081 2023-01-11 10:32:54.844 - info: admin.0 (326281) terminating 2023-01-11 10:32:54.846 - warn: admin.0 (326281) Terminated (UNCAUGHT_EXCEPTION): Without reason 2023-01-11 10:32:54.947 - error: host.iobroker Caught by controller[0]: TypeError: Cannot read property '0' of undefined 2023-01-11 10:32:54.947 - error: host.iobroker Caught by controller[0]: at /opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:115 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at Array.forEach (<anonymous>) 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:83) 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at processImmediate (internal/timers.js:464:21) 2023-01-11 10:32:54.948 - error: host.iobroker instance system.adapter.admin.0 terminated with code 1 (JS_CONTROLLER_STOPPED) 2023-01-11 10:32:54.949 - info: host.iobroker Restart adapter system.adapter.admin.0 because enabled 2023-01-11 10:33:25.022 - info: host.iobroker instance system.adapter.admin.0 started with pid 326444Meine WebSocket-Client Klasse:
import { AdminConnection } from "@iobroker/socket-client"; export class WebSocketClient { private static CONNECTION:Promise<AdminConnection> private async connect(): Promise<AdminConnection> { const adminConnection = new AdminConnection({ protocol: 'ws', host: '192.168.2.4', port: 8081, admin5only: false, autoSubscribes: [], name: "ownview" // optional: other options }); await adminConnection.startSocket(); await adminConnection.waitForFirstConnection(); return adminConnection; } public async getAdminConnection() : Promise<AdminConnection> { if (WebSocketClient.CONNECTION === undefined) { WebSocketClient.CONNECTION = this.connect(); } return WebSocketClient.CONNECTION; } }hat von euch einer eine Idee?
-
Systemdata Bitte Ausfüllen Hardwaresystem: Pi4 Arbeitsspeicher: 4GB Festplattenart: SD-Karte Betriebssystem: Raspian Node-Version: 14.21.1 Nodejs-Version: 14.21.1 NPM-Version: 6.14.7 Installationsart: Skript Image genutzt: Nein Hallo zusammen,
ich versuche grade eine eigene kleine Anwendung (Javascript/TypeScript) gegen ioBroker zu schalten.
Ich nutze um inital die Daten abzurufen den Rest-Adapter, aber um aktuell zu sein, und um die States zu ändern, nutze ich den im Web-Adapter integrierten WebSocket-Server.Warum auch immer hatte ich bis gestern keine Probleme mit dem WebSocket, jetzt neu ist aber, dass, wenn ich die Verbindung aufbaue, der http-server sich verabschiedet und neu startet.
Folgende Fehlermeldung finde ich im Log:
2023-01-11 10:32:54.679 - info: admin.0 (326281) <== Disconnect system.user.admin from ::ffff:192.168.2.48 ownview2 2023-01-11 10:32:54.758 - info: admin.0 (326281) ==> Connected system.user.admin from ::ffff:192.168.2.48 2023-01-11 10:32:54.800 - error: admin.0 (326281) uncaught exception: Cannot read property '0' of undefined 2023-01-11 10:32:54.801 - error: admin.0 (326281) TypeError: Cannot read property '0' of undefined at /opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:115 at Array.forEach (<anonymous>) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:83) at processImmediate (internal/timers.js:464:21) 2023-01-11 10:32:54.801 - error: admin.0 (326281) Cannot read property '0' of undefined 2023-01-11 10:32:54.835 - info: admin.0 (326281) terminating http server on port 8081 2023-01-11 10:32:54.844 - info: admin.0 (326281) terminating 2023-01-11 10:32:54.846 - warn: admin.0 (326281) Terminated (UNCAUGHT_EXCEPTION): Without reason 2023-01-11 10:32:54.947 - error: host.iobroker Caught by controller[0]: TypeError: Cannot read property '0' of undefined 2023-01-11 10:32:54.947 - error: host.iobroker Caught by controller[0]: at /opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:115 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at Array.forEach (<anonymous>) 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/ws-server/index.js:152:83) 2023-01-11 10:32:54.948 - error: host.iobroker Caught by controller[0]: at processImmediate (internal/timers.js:464:21) 2023-01-11 10:32:54.948 - error: host.iobroker instance system.adapter.admin.0 terminated with code 1 (JS_CONTROLLER_STOPPED) 2023-01-11 10:32:54.949 - info: host.iobroker Restart adapter system.adapter.admin.0 because enabled 2023-01-11 10:33:25.022 - info: host.iobroker instance system.adapter.admin.0 started with pid 326444Meine WebSocket-Client Klasse:
import { AdminConnection } from "@iobroker/socket-client"; export class WebSocketClient { private static CONNECTION:Promise<AdminConnection> private async connect(): Promise<AdminConnection> { const adminConnection = new AdminConnection({ protocol: 'ws', host: '192.168.2.4', port: 8081, admin5only: false, autoSubscribes: [], name: "ownview" // optional: other options }); await adminConnection.startSocket(); await adminConnection.waitForFirstConnection(); return adminConnection; } public async getAdminConnection() : Promise<AdminConnection> { if (WebSocketClient.CONNECTION === undefined) { WebSocketClient.CONNECTION = this.connect(); } return WebSocketClient.CONNECTION; } }hat von euch einer eine Idee?
Ich habe das Problem gefunden.
Es war ein Bug in meiner Anwendung.
Ich habe initial einzelne Objekte per REST abgeholt, anschließend versucht mit der ID den state zu subscriben.
Ich habe aber nicht gewartet, bis die REST-Antwort da war, somit war die ID noch leer bzw. undefined.
Das hat dann dazu geführt, dass der admin-Adapter sich zerstört hat und restartet werden musste.Der Thread ist somit für mich erledigt.
-
Ich habe das Problem gefunden.
Es war ein Bug in meiner Anwendung.
Ich habe initial einzelne Objekte per REST abgeholt, anschließend versucht mit der ID den state zu subscriben.
Ich habe aber nicht gewartet, bis die REST-Antwort da war, somit war die ID noch leer bzw. undefined.
Das hat dann dazu geführt, dass der admin-Adapter sich zerstört hat und restartet werden musste.Der Thread ist somit für mich erledigt.
@marcus-schmitt setzt du den title auf gelöst bitte
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden