Websocket同步两路连接
Posted
技术标签:
【中文标题】Websocket同步两路连接【英文标题】:Websocket sync two way connection 【发布时间】:2018-10-31 02:45:25 【问题描述】:我被限制使用上述数据流。
node.js 服务器接收调用,向通过 websocket 连接到 node.js 服务器的客户端启动命令。
浏览器websocket调用javascript库上的指令后,正常流程在客户端结束。
Es.
REST CALL -> KillAllHumans
NODEJS -> pass KillAllHumans to websocket;
BROWSER -> onmessage -> javascript_library.killAllHumans;
REST ENDPOINT 的一个特殊方法需要返回一个由 javascript 库生成的值,因此 node.js 必须保持挂起状态,直到 websocket 客户端响应。
问题是:有可能吗? 这是浏览器上的简单 websocket 代码。
echo_service = new WebSocket(websocketUrl,"echo-protocol");
echo_service.onmessage = function(event)
var result = javascript_library.manageAction(event.data);
console.log("killAllHumansResults: "+result);
return result;
return 语句似乎不起作用。
已编辑:
这是接收 REST CALL 的 REST API 的主体。 wsServer 是 websocket 对象类。查看结果变量。这是返回给调用 REST CALL(使用回调函数)的客户端的响应。
var result = this._wsServer.sendMessage(<ip_client>,<parameters>);
console.log("rest return: "+result);
callback(error, result);
return;
对于使用此节点项目的 Websocket 对象: https://www.npmjs.com/package/websocket
发送消息是一个简单的呼叫connection.send(message);
客户端正确接收消息。 “killAllHumansResults”已正确打印。 不幸的是,“rest return:”是未定义的。
很明显,打印是在剩余流程完成之前启动的。
【问题讨论】:
不工作是什么意思?输出是否不正确或不符合您的需求? 删除了一些副词,使陈述更加简洁。清理了一些拼写错误和不一致。 【参考方案1】:经过一番研究,我找到了一种使用 sleep 库 (npm install sleep) 的解决方法。
this._wsServer.sendMessage(<ip_client>,<parameters>);
sleep.sleep(5);
var result = this._wsServer.getReceivedMessage(<ip_client>);
callback(error, result);
return;
5 秒足以让客户端将存储在 wsServer 中的数据发回。
【讨论】:
以上是关于Websocket同步两路连接的主要内容,如果未能解决你的问题,请参考以下文章