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
要配置用于SSL通信的WebSocket服务器,请参阅配置为HTTPS。
配置的出版商
- 在FME服务器Web用户界面中,选择通知>出版物,然后单击新。
- 为发布提供一个名称
- 在协议下拉菜单中,选择WebSocket。
指定主题您希望使用下拉选择器发布。要创建主题并立即使用它,请单击+。
- 目标URL:这个字段是预先用FME服务器核心上的WebSocket服务器的URL填充的(包含在您的FME服务器安装中)。但是,您可以选择连接到不同的WebSocket服务器。
- 流ID:指定发布的流ID。流ID允许WebSocket服务器识别消息并将它们连接到请求应用程序。在本例中,请求应用程序是通知服务发布者。
- 单击OK。
消息传递协议
在发送消息之前,WebSocket服务器必须打开它们。要打开消息,使用以下模式:
注意:JSON用于所有消息传递
{
“ws_op”:“开放”,
“ws_stream_ids”:“
}
消息打开后,将建立连接,使用流ID标识消息。然后,WebSocket服务器使用这个模式传递消息:
{
“ws_op”:“发送”,
“ws_msg”:“味精”
}
WebSocket服务器支持在流打开后发送多条消息。
在发送消息之后,请求WebSocket服务器关闭消息流是一个很好的实践。但是,如果消息没有显式关闭,WebSocket服务器将自动关闭它。
{
“ws_op”:“关闭”
}
关键词:
- ws_op:定义WebSocket操作。如果希望WebSocket服务器打开消息,请指定“开放”。要发送消息,请指定“发送”。若要关闭消息流,请指定“关闭”。
- ws_stream_ids:标识一个或多个消息流,以便WebSocket服务器能够将它们与正确的请求应用程序(如FME通知服务或WebSocket web服务器)关联起来。
例如,考虑以下从HTML5客户端到WebSocket服务器的一系列消息:
{
“ws_op”:“开放”,
:“ws_stream_ids send-stream”,
}
{
“ws_op”:“发送”,
"ws_msg": "Hello World"
}
{
“ws_op”:“关闭”
}
在WebSocket服务器打开“发送流”消息流之后,它被发送到在该流上创建的任何发布者。消息“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>"
},
<…>
{
]
}
另请参阅