Zum Hauptinhalt springen

WebSocket-Client

Modus, in dem sich das Gateway als Client per Outbound-Verbindung mit dem Endpoint eines externen Streaming-Servers (ws / wss) verbindet und die gepushten Nachrichten in Echtzeit empfängt.

SituationWelcher Modus ist zu verwenden
Ein externes IT-System sendet Werte per REST POSTHTTP-Push
Ein externer Streaming-Server liefert Werte per WebSocketWebSocket-Client (diese Seite)
Werte einer betriebsinternen PLC werden direkt gelesenModbus / OPC-UA usw.

Eingabewerte im Registrierungsformular

EingabefeldWas wird eingetragenBeispiel
IP-AdresseHost des WebSocket-Servers192.168.10.99, stream.example.com
PortPort des WebSocket-Servers (Standard: ws=80, wss=443)8765, 443
PATHEndpoint-Pfad (Standard /)/stream/v1
TLSVerwendung von wssfalse (ws) / true (wss)
SUBSCRIBE MESSAGENachricht, die unmittelbar nach dem Verbindungsaufbau einmalig gesendet wird (optional){"op":"subscribe","topic":"line1.tempC"}
ErfassungsintervallIntervall, in dem das Gateway die zwischengespeicherten Werte abholt (ms)1000

Tatsächliche Verbindungs-URL: <scheme>://<host>:<port><PATH> (z. B. ws://192.168.10.99:8765/stream/v1)


PLC-Adressnotation des Tags — 4-Mode-JSON

Wenn die vom Server gesendeten Nachrichten JSON sind, werden die Werte mit demselben 4-Mode-Decoder wie bei MQTT / Apache Kafka extrahiert.

Angenommen, der Server pusht Folgendes:

{"tempC": 25.7, "humid": 40.2, "running": true, "meta":{"unit":"degC"}}
ModusPLC-Adresse des TagsEmpfangener Wert
KEY (top-level)tempC25.7
KEYhumid40.2
KEYrunningtrue
PATH (JSON Pointer):$.meta.unitdegC
RAW_raw_ oder :_raw_ (oder leeres Feld)Gesamte Nachricht
SCALAR(wenn die Nachricht kein JSON ist) _raw_Nachricht unverändert

WebSocket ist ein einzelner Kanal, daher entfällt der Topic-Teil — den vorderen Teil von : leer lassen oder einfach nur den Key verwenden.

Wenn es sich nicht um JSON handelt oder die gesamte Nachricht unverändert übernommen werden soll, _raw_ oder ein leeres Feld verwenden.


Häufige Anwendungsfälle

FallVorgehen
Cloud-Streaming-Broker (Echtzeitkurse, Wechselkurse, Wetter usw.)Die vom Server gepushten JSON-Keys unverändert als Tag registrieren
ROS 2 / rosbridge_serverVerbindung über den WebSocket von rosbridge → Empfang der Topic-Nachrichten
Betriebsinternes eigenes Streaming-GatewayÜblicherweise unverschlüsseltes ws 8080 / 8765 — tls=false
Externes Security-SaaS (Zertifikat erforderlich)wss 443 — tls=true
Server verlangt einen Subscribe-HandshakeVereinbarten Payload in SUBSCRIBE MESSAGE eintragen

Häufige Probleme und Lösungen

SymptomUrsacheLösung
Keine Werte kommen anServer pusht keine NachrichtenMit wscat -c ws://<host>:<port><path> direkt empfangen und prüfen, ob Zeilen in der Konsole erscheinen
Keine Werte kommen anSubscribe-Nachricht nicht konfiguriert (obwohl vom Server gefordert)Serverhandbuch prüfen und SUBSCRIBE MESSAGE eintragen
[WS] connect 실패: timeoutFirewall / Port / DNSPrüfen, ob der Port blockiert ist und ob mit telnet / nc eine TCP-Verbindung möglich ist
[WS] connect 실패: handshakeFehler bei Path- / TLS-KonfigurationURL <scheme>://<host>:<port><path> direkt verifizieren
TLS-ZertifikatsfehlerSelbstsigniertes Zertifikat (self-signed)Im Produktivbetrieb offizielles Zertifikat empfohlen. Übergangsweise Systemadministrator um Aufnahme in cacerts bitten
Werte einzelner JSON-Keys sind leerNachrichtenformat ist kein JSONZunächst mit _raw_ empfangen und das Format prüfen

Weiterführende technische Dokumentation