斯潘8
斯潘4
本文是针对FME Server 2014的。有关此内容的FME Server 2015版本,请访问:WebSockets和FME服务器(2015年).
本教程的代码和工作区是在Github上托管.
WebSockets是一种相对较新的技术,在HTTP之上实现,它允许基于浏览器的客户端-服务器双向通信,而无需轮询开销(具有HTTP开销的Ajax请求)。也没有客户端插件的不便和不可靠。现代浏览器包括用于连接到WebSockets服务器的JavaScriptAPI的内置实现。
自2014年发布以来,FME服务器可以作为WebSocket服务器而不需要额外的模块,允许与客户端Web应用程序进行快速实时通信,需要最少的设置。本教程将向您演示如何操作。
http://en.wikipedia.org/wiki/websocket网站
http://www.html5rocks.com/en/tutorials/websockets/basics/
https://developer.mozilla.org/en/docs/websockets
WebSockets可以与FME服务器一起使用,主要有两种模式。你选择哪一个取决于你的申请。还可以为通信流的不同部分混合这些模式。
在所有模式下,命名流在客户端之间共享。这意味着FME服务器可以轻松地向多个客户机广播相同的消息,在一条流上接收他们的通信。
当你的通讯音量很低时使用这个,或者,如果您需要通知服务的灵活性。
在这种情况下,发动机之间的通信(即运行的工作区)和WebSocket服务器通过WebSocket发布者和订阅者通过FME服务器主题进行路由。作业通常是响应主题上的消息而启动的,并在完成处理后完成。
当你有大量的信息时使用这个,并且只处理浏览器服务器通信。
在这种情况下,发动机(即运行工作区)直接连接到WebSocket服务器,一直跑,直到你取消工作。这确实系上了一个发动机执照,但它消除了启动引擎和建立连接的开销。
如果通信流的不同部分适合不同的描述,您可能希望以组合模式混合这些模式。
在这种情况下,引擎将响应通知事件并直接在WebSocket上发送,反之亦然。当请求不多时,这很有用,但是您仍然希望服务器响应而不需要来自客户机的轮询开销,或者你不想把一个持续运行的FME引擎投入到工作中去。
在这种模式下,FME服务器将基于WebSocket的通信集成到其现有的通知框架中。
为了通过WebSockets发送和接收消息,我们需要配置一个主题,出版物和订阅,使用FME服务器Web界面。第一,创建一个名为“的新主题”TopICH-WSH样本“.然后创建一个名为“的新出版物”蛹状样品“具有流ID”样品流入“. 请参见下面的示例:
请注意,目标URL应该具有FME服务器计算机的公共可访问主机名(默认情况下,该URL配置为使用localhost)。默认的端口和路径应该保持原样。WebSocket服务器将在端口7078上通信。
FME服务器具有通用的WebSocket变压器,必须配置为使用FME服务器的协议进行通信。向FME服务器发送消息,使用WebSocketSender。要接收消息,使用WebSocketReceiver。
第一,我们只需通过WebSockets向FME服务器发送一条消息,并在监控选项卡中查看。如下设置工作区:或使用send_sample.fmw:
确保您使用的是服务器的正确主机名-默认情况下,WebSocketSender设置为使用localhost。
连接前导码是
_ws_op:'打开',ws撊stream_id:'示例撊stream_in'
这将打开在创建发布时指定的流ID上与FME服务器的通信。
要发送的数据是
_ws_op:'发送',WS_msg:'FME Lizard值班报告。'
在FME服务器Web界面中,设置监视以查看传入消息。保持浏览器窗口打开,在FME桌面上运行工作区,您应该看到以下内容:
在这种模式下,发动机(即运行工作区)直接连接到WebSocket服务器,一直跑,直到你取消工作。
所包含文件中的工作区“displacer.fmw”配置为以消息流模式运行。
工作区中的关键组件是WebSocketReceiver以及网页寄存器.接收器读取接收到的信息,然后提取到点。这些点被移动了,由寄件人填写。
在这个例子中,传出消息的格式如下:
“ws_topic”:“disp_pnts”“ws_msg”:“\”lat\“:\”49.146809923073\“,\“隆\”:\“-122.672091674805 \”“”
需要ws_topic和ws_msg元素。ws_msg可以包含您希望发送的任何文本。
在教程文件的www文件夹中,“index.html”拥有通过Web套接字在Web浏览器中与FME服务器接口所需的所有javascript代码。
前端网页包括一个谷歌地图界面,以及接收和发送信息的日志。它有两个WebSocket连接-一个用于发送用户选择的点,另一个用于接收位移点。访问实时演示
fmeserver.init(服务器:“http:///
Web应用程序的后端正在运行,以下步骤用于尝试前端:
最后,我们将更改上述工作区以使用混合模式。
对于完整版本,查看本教程包含的文件中的“置换器修改.fmw”。可以推测的是,它是置换器.fmw的改进版本。
从“置换器.fmw”开始,尝试更改工作区,FME服务器设置,以及使用以下工作流的javascript代码。亚搏在线您需要删除WebSocketReceiver,并将工作区订阅到主题。主题需要有一个WebSocket发布。
修改后的工作区应具有文本文件读取器。您可以将“sample json.json”指定为数据文件,但它将被传入的通知替换。
创建WebSocket发布。
访问http://
恭喜!你现在知道怎么用了HTML5网络插座具有FME服务器-浏览器和服务器之间的通信开销最小,不需要服务器端代码。直接在中使用WebSockets消息流模式当您仅通过WebSocket处理大量消息时。在中将WebSockets与FME服务器的通知服务耦合通知模式除了WebSockets之外,当您想使用其他协议发送和接收时。或者,把技术结合起来混合模式当你不想占用一台发动机的全部时间时,但仍然需要单向的高吞吐量消息传递。
如果您不确定要在Web应用程序中使用哪种模式,或者您对WebSockets和FME服务器还有其他问题,随意联系我们.
?2019安全亚搏在线软件公司|合法的