如何解决如何通过分叉的工作程序将 websocket 消息排队,并同时在 Node js 的主循环中一一处理它们?
我正在编写一个加密交易机器人,它需要监听 websocket 流(订单簿更改、交易执行等)。对于每个事件,websocket 应该将传入的消息保存在一个数组中,并调用主逻辑循环来处理消息。
在执行逻辑代码时,如果接收到更多消息,它们应该在一个数组中排队(保存在某处)并且它们不应该立即调用主循环。想法是,一旦主循环完成处理,它就可以查找队列数组并选择下一条要处理的消息。这样就不会丢失任何消息。此外,如果多个消息到达而主逻辑循环已经在工作,则不会多次调用主逻辑循环。
我正在使用以下代码,但无法实现所需的架构。
webSocket.onopen = function(event) {
var msg = {
"op": "authKeyExpires","args": ["somekey",nonce,signature + ""]
};
webSocket.send(JSON.stringify(msg));
webSocket.send(JSON.stringify({"op":"subscribe","args":["orderBookApi:BTCPFC_0"]}));
};
webSocket.onmessage = async function(e) {
queue.push(JSON.parse(e.data));
main_logic(queue);
}
async function main_logic(queue){
//process the next message in the queue and then delete it. Keep doing it till queue is empty.
}
我读过,也许 websocket 的 fork 或 worker 进程会有所帮助。请指教,因为我是 node js 和编程的新手。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。