Websocket同步双向连接

时间:2018-05-21 12:27:54

标签: node.js websocket

enter image description here

我被限制使用上述数据流。

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;
    }

返回声明似乎无效。

编辑:

这是收到REST CALL的REST API的主体。 wsServer是websocket对象类。查看结果var。这是返回给调用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”。 不幸的是,“休息回归:”未定义。

很明显,在剩余流量完成之前就已开始打印。

1 个答案:

答案 0 :(得分:0)

经过一些研究,我找到了使用睡眠库(npm install sleep)的解决方法。

this._wsServer.sendMessage(<ip_client>,<parameters>);
 sleep.sleep(5);
 var result = this._wsServer.getReceivedMessage(<ip_client>);
 callback(error, result);
 return;

五秒钟足以让客户端发回存储在wsServer中的数据。