【发布时间】: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:”是未定义的。
很明显,打印是在剩余流程完成之前启动的。
【问题讨论】:
-
不工作是什么意思?输出是否不正确或不符合您的需求?
-
删除了一些副词,使陈述更加简洁。清理了一些拼写错误和不一致。