WebSocket出版商
WebSocket发布者通过TCP从支持WebSocket的客户端接收消息,并将其发布到FME服务器主题。支持的客户端可以包括WebSocketSender转换器,以及以下Java或HTML5 web浏览器:
- ie 10 +
- Firefox 11 +
- Chrome 16 +
- Safari 6 +
- Opera 12.10 +
WebSocket沟通渠道
WebSocket服务器位于FME服务器核心。默认情况下,FME服务器使用以下通道进行WebSocket通信:
- 端口:7078
- URI:ws: / / <主机名>: 7078 / websocket
要配置WebSocket服务器进行SSL通信,请参见配置为HTTPS.
配置的出版商
- 在FME服务器Web用户界面中,选择通知>出版物,然后单击新.
- 为发布提供一个名称
- 在协议下拉菜单中,选择WebSocket。
指定主题您想要使用下拉选择器发布到。要创建一个主题并立即使用它,请单击+.
- 目标URL:该字段由FME服务器核心上的WebSocket服务器的URL预填充(包含在FME服务器安装中)。但是,您可以选择连接到不同的WebSocket服务器。
- 流ID:指定发布的流ID。流ID允许WebSocket服务器识别消息并将它们连接到请求应用程序。在本例中,发出请求的应用程序是通知服务发布者。
- 单击OK。
消息传递协议
WebSocket服务器必须在发送消息之前打开它们。要打开消息,可以使用以下模式:
注意:JSON用于所有消息传递
{
“ws_op”:“开放”,
“ws_stream_ids”:[" < streamid1 >”、“< streamid2 >”、“< streamid3 >”,…]
}
一旦打开消息,就建立连接,使用Stream ID来标识消息。然后WebSocket服务器使用这个模式来转发消息:
{
“ws_op”:“发送”,
“ws_msg”:“味精”
}
WebSocket服务器支持在流打开后发送多个消息。
在发送消息之后,请求WebSocket服务器关闭消息流是一个很好的做法。但是,如果消息没有显式关闭,WebSocket服务器会自动关闭它。
{
“ws_op”:“关闭”
}
关键词:
- ws_op:定义WebSocket操作。如果你想要WebSocket服务器打开消息,指定“开放”.要发送消息,请指定“发送”.若要关闭消息流,请指定“关闭”.
- ws_stream_ids:标识一个或多个消息流,以便WebSocket服务器能够将它们与正确的请求应用程序相关联,例如FME Notification Service或WebSocket web服务器。
例如,考虑以下一系列从HTML5客户端到WebSocket服务器的消息:
{
“ws_op”:“开放”,
:“ws_stream_ids send-stream”,
}
{
“ws_op”:“发送”,
"ws_msg": "Hello World"
}
{
“ws_op”:“关闭”
}
WebSocket服务器打开“send-stream”消息流后,它被发送到该流上创建的任何发布者。然后将消息“Hello World”传递给为这些发布者定义的所有主题。然后WebSocket服务器关闭流。
你可以发送包含当前在FME服务器WebSocket服务器上打开的所有通道信息的消息。这些信息对于WebSocket通信的管理和故障排除非常有用。
通过流ID获取打开的WebSocket通道的数量
{
“ws_op”:“管理”,
:“ws_msg getnumchannels ()
}
相应的响应对象:
{
“numchannels”:“<number_of_channels>”,
“流”:[
{
“流”:“message_stream_id",
“numchannels”:“<number_of_channels_open_on_this_stream>”
},
<...>
{
]
}
获取关于每个打开的WebSocket通道的连接信息
{
“ws_op”:“管理”,
:“ws_msg getchannelinfo ()
}
相应的响应对象:
{
“numchannels”:“<number_of_channels>”,
“通道”:(
{
“端口”:“<channel_port_number>”,
“流”:“message_stream_id",
“主机”:“channel_host_ip_address",
:“可写的<channel_is_writable_true_or_false>”
},
<...>
{
]
}
另请参阅