FME Flow:2025,0
WebSocket-Herausgeber
Der WebSocket-Publisher empfängt Nachrichten über TCP von einem WebSocket-unterstützten Client und veröffentlicht sie anFME Flow Themen. Zu den unterstützten Clients können der WebSocketConnector-Transformator sowie die folgenden Java- oder HTML5-Webbrowser gehören:
- Microsoft Edge
- Firefox 11+
- Chrome 16+
- Safari 6+
- Opera 12.10+
WebSocket-Kommunikationskanäle
DerWebSocket-Server befindet sich auf derFME Flow Kern. StandardmäßigFME Flow verwendet die folgenden Kanäle für die WebSocket-Kommunikation:
- Port: 7078
- URI:ws://<Hostname>:7078/WebSocket
Informationen zum Konfigurieren des WebSocket-Servers für die SSL-Kommunikation finden Sie unterKonfigurieren für HTTPS.
Konfigurieren des Herausgebers
- ImFME FlowWeb-Benutzeroberfläche, wählenBenachrichtigungen > Veröffentlichungenund klicken Sie auf Neu.
- Geben Sie einen Namen für die Veröffentlichung ein
- Wählen Sie im Dropdown-Menü „Protokoll“ die Option „WebSocket“ aus.
-
Geben Sie dieThemen Sie möchten mithilfe der Dropdown-Auswahl veröffentlichen. Um ein Thema zu erstellen und es sofort zu verwenden, klicken Sie auf+.
- Ziel-URL: Dieses Feld ist bereits mit der URL des WebSocket-Servers auf demFME Flow Core (im Lieferumfang IhresFME Flow Installation). Sie können jedoch eine Verbindung zu einem anderen WebSocket-Server herstellen.
- Stream-ID: Geben Sie die Stream-ID für die Veröffentlichung an. Die Stream-ID ermöglicht es dem WebSocket-Server, Nachrichten zu identifizieren und sie mit anfordernden Anwendungen zu verbinden. In diesem Fall ist die anfordernde Anwendung der Benachrichtigungsdienst-Herausgeber.
- Klicken Sie auf „OK“.
Messaging-Protokoll

Der WebSocket-Server muss Nachrichten vor dem Senden öffnen. Zum Öffnen von Nachrichten wird folgendes Schema verwendet:
{
"ws_op" : "öffnen",
"ws_stream_ids": ["<streamid1>", "<streamid2>", "<streamid3>", ...]
}
Sobald eine Nachricht geöffnet wird, wird eine Verbindung hergestellt, wobei die Stream-ID zur Identifizierung der Nachricht verwendet wird. Der WebSocket-Server leitet dann Nachrichten mithilfe dieses Schemas weiter:
{
"ws_op" : "senden",
"ws_msg": "Nachricht"
}
Der WebSocket-Server unterstützt das Senden mehrerer Nachrichten, nachdem ein Stream geöffnet wurde.
Nach dem Senden von Nachrichten empfiehlt es sich, den WebSocket-Server aufzufordern, den Nachrichtenstrom zu schließen. Wenn eine Nachricht jedoch nicht explizit geschlossen wird, schließt der WebSocket-Server sie automatisch.
{
"ws_op": "schließen"
}
Merkmale:
- ws_op: Definiert den WebSocket-Vorgang. Wenn Sie möchten, dass der WebSocket-Server Nachrichten öffnet, geben Sie"offen". Um Nachrichten zu senden, geben Sie an"schicken". Um einen Nachrichtenstrom zu schließen, geben Sie an"schließen".
- ws_stream_ids: Identifiziert einen oder mehrere Nachrichtenströme, damit der WebSocket-Server sie der Quelle zuordnen kann.
Betrachten Sie beispielsweise die folgende Nachrichtenserie von einem HTML5-Client an Ihren WebSocket-Server:
{
"ws_op" : "öffnen",
"ws_stream_ids": "Sende-Stream",
}
{
"ws_op" : "senden",
"ws_msg": "Hallo Welt"
}
{
"ws_op": "schließen"
}
Nachdem der WebSocket-Server den Nachrichtenstream „send-stream“ geöffnet hat, wird er an alle in diesem Stream erstellten Herausgeber gesendet. Die Nachricht „Hallo Welt“ wird dann an alle für diese Herausgeber definierten Themen übermittelt. Anschließend schließt der WebSocket-Server den Stream.

Sie können Nachrichten mit Informationen zu allen Kanälen senden, die derzeit auf demFME Flow WebSocket-Server. Diese Informationen können für die Verwaltung und Fehlerbehebung der WebSocket-Kommunikation hilfreich sein.
So ermitteln Sie die Anzahl der offenen WebSocket-Kanäle nach Stream-ID
{
"ws_op": "Administrator",
"ws_msg": "getnumchannels()"
}
Entsprechendes Antwortobjekt:
{
"AnzahlKanäle" : "<Anzahl_der_Kanäle>",
"Streams":[
{
"Stream" : "Nachrichtenstream-ID",
"AnzahlKanäle" : "<Anzahl_der_offenen_Kanäle_in_diesem_Stream>"
},
<...>
{
]
}
So erhalten Sie Verbindungsinformationen zu jedem offenen WebSocket-Kanal
{
"ws_op": "Administrator",
"ws_msg": "getchannelinfo()"
}
Entsprechendes Antwortobjekt:
{
"AnzahlKanäle" : "<Anzahl_der_Kanäle>",
"Kanäle" :[
{
"Hafen" : "<Kanal-Portnummer>",
"Stream" : "Nachrichtenstream-ID",
"Gastgeber" : "Kanal-Host-IP-Adresse",
"schreibbar" : "<Kanal ist beschreibbar (true oder false)>"
},
<...>
{
]
}