我被限制使用上述数据流。
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”。 不幸的是,“休息回归:”未定义。
很明显,在剩余流量完成之前就已开始打印。
答案 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中的数据。