span8
span4
有关将FME服务器作为WebSocket服务器的信息,请参见WebSocket文档。
在PostGIS中,每当一个特性(行)在表中被更改时,Node.js都会接收关于该特性的信息。在javascript文件中,当Node.js从PostGIS接收特性时,它使用ws模块将特性流到FME服务器。
const WebSocket =需要('ws');var pg = require ('pg');var请求= require('request');var pgConString = "postgres://username:password@server:port/database";const ws = new WebSocket('ws://FMEserver:7078/ WebSocket /', {header: {"ws_op": "open", "ws_stream_id": "postgres"}});控制台。log("pre open ready state " + ws.readyState);ws。on('open', function() { ws.send('{ "ws_op" : "open", "ws_stream_id" : "postgres", "ws_msg" : "open" }');});pg.connect(pgConString, function(err, client) {if(err) {console.log(err);} else {console.log('HELLO');客户端。on('notification', function(msg) { console.log("msg is "+msg.payload);/ / db_body = JSON.parse (msg.payload);msgType = msg.payload类型;sendmsg2 = (' {“ws_op”:“发送”、“ws_stream_id”:“postgres”、“ws_msg”: ' + msg.payload + '} ');ws。send (sendmsg2);});} var查询= client。query("LISTEN watchers2");});
如果要编辑大量数据,这是很有用的。与每次向主题发送通知并触发每个特性的工作空间不同,WebSockets允许使用一个工作空间来处理出现的特性。
可以将WebSockets设置为FME服务器中的发布,并将每个消息发布到一个主题。
也可以使用WebSocketReceiver转换器接收WebSockets。必须指定相同的参数:WebSocket服务器URL和流ID。
完整的工作空间在这里:websocket-receiver-complete.fmw
有关需求的更多信息,请参见教程的开始页面。
修改postgis2ws.js文件以匹配您的数据库和FME服务器连接需求。
在命令提示窗口中,导航到节点可执行文件所在的文件夹。在命令窗口中键入:node
如果什么都没发生,那很好。代码中的任何错误都会在这里报告。
在FME工作台中添加一个创建者、一个WebSocketReceiver和一个日志记录器。需要设置WebSocketReceiver连接序言来连接到postgis2ws.js文件中的流,在本例中,WebSocket流是'postgres'。
{“ws_op”:“开放”,“ws_stream_ids”: [" postgres "]}
工作空间完成后,运行它。只有一个功能会从创建者传递到WebSocketReceiver。
您可能在转换日志中注意到WebSocketReceiver正在等待传入的WebSocket消息。该工作区将继续运行,直到被取消,并将一直等待消息。
WebSocketReceiver:尝试连接到端口‘7078’上的主机‘localhost’WebSocketReceiver:成功连接到端口‘7078’上的主机‘localhost’WebSocketReceiver:执行与远程主机的握手WebSocketReceiver:握手成功
现在是时候从PostGIS表中编辑、创建或删除一些特性了。这可以使用FME(在单独的工作空间中)或使用GIS。
可以将此工作区发布到FME服务器并运行或设置为调度。工作空间将在作业运行的整个时间内使用一个引擎。如果有很多功能以主题消息的形式出现,为每个功能创建一个任务,那么这可能比持续运行大量快速、较小的任务更“昂贵”。
FME服务器现在有高级属性运行作业或调度:
这将允许作业持续到取消或取消到指定的到期时间。这将允许WebSocketReceiver工作区在工作时间或数据库表上有活动时运行。
由于_output属性是JSON, jsonflater将有助于将每个键转换为属性。然后可以使用AttributeManager创建一条消息,该消息可用于通知某人特性的更改。
在创建特性时,PostGIS特性中的删除或更改应该开始在工作区中流动。由于日志记录器转换器的原因,发送的消息将出现在翻译日志窗口中。
可以很容易地扩展此工作区,以开始对新特性执行验证过程或通知相关方。
©2019安全亚搏在线软件公司法律