WebSocket Server-Nachrichtenprotokoll

Öffnen, Senden und Schließen von Nachrichten

Der WebSocket-Server muss Nachrichten vor dem Senden öffnen. Um Nachrichten zu öffnen, wird das folgende Schema verwendet:

Hinweis  JSON wird für alle Nachrichten verwendet

{

"ws_op" : "open",

"ws_stream_ids" : ["<streamid1>", "<streamid2>", "<streamid3>", ...]

}

Sobald eine Nachricht geöffnet ist, wird eine Verbindung hergestellt, die die Stream ID zum Identifizieren der Nachricht verwendet. Der WebSocket-Server leitet Nachrichten unter Verwendung dieses Schemas weiter:

{

"ws_op" : "send",

"ws_msg" : "msg"

}

Der WebSocket-Server unterstützt das Senden mehrerer Nachrichten nach dem Öffnen eines Streams.

Nach dem Senden von Nachrichten empfiehlt es sich, dass der WebSocket-Server den Nachrichten-Stream schließt. Wenn eine Nachricht jedoch nicht explizit geschlossen wird, schließt der WebSocket-Server sie automatisch.

{

"ws_op": "close"

}

Attribute:

  • ws_op: Definiert die WebSocket-Operation. Wenn der WebSocket-Server Nachrichten öffnen soll, geben Sie "open" an. Um Nachrichten zu senden, geben Sie "send" an. Um einen Nachrichten-Stream zu schließen, geben Sie "close" an.
  • ws_stream_ids: Identifiziert einen oder mehrere Nachrichten-Sreams, damit der WebSocket-Server sie der Quelle zuordnen kann.

Abrufen von Informationen über Open WebSocket-Kanäle

Sie können Nachrichten mit Informationen zu allen derzeit auf dem FME Flow WebSocket-Server geöffneten Kanälen senden. Diese Informationen können zur Verwaltung und Fehlerbehebung von WebSocket-Kommunikationen hilfreich sein.

Um die Anzahl der geöffneten WebSocket-Kanäle nach Stream ID zu ermitteln

{

"ws_op" : "admin",

"ws_msg" : "getnumchannels()"

}

Entsprechendes Antwortobjekt:

{

"numchannels" : "<number_of_channels>",

"streams":[

{

"stream" : "message_stream_id",

"numchannels" : "<number_of_channels_open_on_this_stream>"

},

<...>

{

]

}

Um Verbindungsinformationen zu jedem geöffneten WebSocket-Kanal zu erhalten

{

"ws_op" : "admin",

"ws_msg" : "getchannelinfo()"

}

Entsprechendes Antwortobjekt:

{

"numchannels" : "<number_of_channels>",

"channels" :[

{

"port" : "<channel_port_number>",

"stream" : "message_stream_id",

"host" : "channel_host_ip_address",

"writable" : "<channel_is_writable_true_or_false>"

},

<...>

{

]

}