WebSocket Server Messaging Protocol
Opening, Sending, and Closing Messages
The WebSocket server must open messages before sending them. To open messages, the following schema is used:
Note: JSON is used for all messaging
{
"ws_op" : "open",
"ws_stream_ids" : ["<streamid1>", "<streamid2>", "<streamid3>", ...]
}
Once a message is opened, a connection is established, using the Stream ID to identify the message. The WebSocket server then relays messages using this schema:
{
"ws_op" : "send",
"ws_msg" : "msg"
}
The WebSocket server supports sending multiple messages after a stream is opened.
After sending messages, it is a good practice to request that the WebSocket server close the message stream. However, if a message is not explicitly closed, the WebSocket server closes it automatically.
{
"ws_op": "close"
}
Keywords:
- ws_op: Defines the WebSocket operation. If you want the WebSocket server to open messages, specify "open". To send messages, specify "send". To close a message stream, specify 'close'.
- ws_stream_ids: Identifies one or more message streams so that the WebSocket server can associate them with the correct requesting application, such as the FME Notification Service or a WebSocket web server.
Getting Information about Open WebSocket Channels
You can send messages containing information about all channels that are currently opened on the FME Server WebSocket server. This information can be useful for administering and troubleshooting WebSocket communications.
To get the number of open WebSocket channels, by Stream ID
{
"ws_op" : "admin",
"ws_msg" : "getnumchannels()"
}
Corresponding response object:
{
"numchannels" : "<number_of_channels>",
"streams":[
{
"stream" : "message_stream_id",
"numchannels" : "<number_of_channels_open_on_this_stream>"
},
<...>
{
]
}
To get connection information about each open WebSocket channel
{
"ws_op" : "admin",
"ws_msg" : "getchannelinfo()"
}
Corresponding response object:
{
"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>"
},
<...>
{
]
}