有没有办法使用WebSocket重载Node.js事件循环

有没有办法使用WebSocket重载Node.js事件循环,node.js,websocket,event-loop,Node.js,Websocket,Event Loop,我对Node.js和websocket()的“WS”实现有问题。在信息激增(短时间内有大量信息)之后,我有数据表明我“错过”了一条信息 我已经联系了emitter服务器的所有者,他向我保证所有消息都是由他发送的 我已经记录了我这边收到的每一条消息(在('message',()=>{})上的函数开始时),我似乎找不到消息,所以我的假设是它甚至没有达到这一点 所以我想知道: 消息将按FIFO顺序重新接收和处理。在处理当前消息期间,新消息将堆叠在节点事件循环中,以便在之后立即计算。正确吗?有没有

我对Node.js和websocket()的“WS”实现有问题。在信息激增(短时间内有大量信息)之后,我有数据表明我“错过”了一条信息

  • 我已经联系了emitter服务器的所有者,他向我保证所有消息都是由他发送的
  • 我已经记录了我这边收到的每一条消息(在('message',()=>{})上的函数开始时),我似乎找不到消息,所以我的假设是它甚至没有达到这一点
所以我想知道:

  • 消息将按FIFO顺序重新接收和处理。在处理当前消息期间,新消息将堆叠在节点事件循环中,以便在之后立即计算。正确吗?有没有办法使该事件循环“太大”这可能会丢弃新的输入消息?如果是,它会安静地丢弃它吗?或者程序会剧烈崩溃(换句话说,我如何才能看到消息是否以这种方式被丢弃?)
  • “ws”模块是否对接收的最大消息数有任何已知的限制?它是否有删除消息的内部方式
  • 有没有比“ws”模块更好的替代方案
  • 有没有其他方法来解释“遗漏”的信息

非常感谢您的见解,

我在nodejs中使用
ws
来处理生产中同时来自多个客户端的大型消息流,而且我从未让它丢失消息。每台服务器每秒处理数百个不同客户端连接的数千条消息。如果ws丢弃消息或如果我的用户下了订单,他们会大声抱怨

这使我猜测您没有达到
ws
的任何限制

在我早期的编程工作中,我有一个不太聪明的想法,就是将传入消息放入nodejs代码中的队列对象中,然后“稍后”处理它们这导致通过我的服务器的消息流非常混乱。有时看起来好像我丢失了ws-messages。我很高兴删除所有代码,并在其消息事件处理程序中完全分派每条消息

Websocket连接有时会异常关闭。这是因为网络。您可以通过错误捕获这些情况并关闭事件处理程序。消息的发送方或接收方可能需要一段时间才能检测到某种网络故障中断了其连接。这可能导致发送方和接收方之间的消息计数不一致呃,值得调查


I使用消息计数装饰ws的连接对象(“装饰”-向对象添加特定于应用程序的属性)并在连接关闭时将这些消息计数放入日志。

您好,感谢您提供的信息。我可能没有明确说明排队系统。我不是手动排队请求,我只是指节点一个接一个地提供消息的方式。我猜如果在处理fi期间收到新消息首先,该消息不会被丢弃,而是按节点在内部排队。我没有在这上面做任何事情。我理解你。我想说,恕我直言,你丢失的消息几乎肯定是由于代码中的错误或突然关闭的连接。我想分享我的一些错误可能会有用。是的,我肯定这是一个p我这边有个问题。问题确实出在没有正确清理数据的短暂断开连接上。你的帖子帮我找到了答案。谢谢你,不客气。所有这些花哨的API让事情看起来很简单,但是网络。