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 326444
Meine 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.
-
@marcus-schmitt setzt du den title auf gelöst bitte