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

Is there a way to overload Node.js event loop using websoket

我在 Node.js 和 websocket (https://www.npmjs.com/package/ws) 的 "WS" 实现方面遇到问题。在激增之后(在短 window 时间内收到大量消息),我得到的数据表明我收到了 "missed" 条消息。

所以我想知道:

非常感谢您的见解,

我在 nodejs 中使用 ws 在生产中同时处理来自许多客户端的大量消息流,而且我从未让它丢失消息。每个服务器每秒处理来自数百个不同客户端连接的数千条消息。我的系统工作方式,如果 ws 丢失消息或更改他们的订单,我的用户会大声抱怨。

这让我猜想您没有达到 ws 的任何限制。

在我的编程工作的早期,我有一个不太聪明的想法,即将传入的消息放入我的 nodejs 代码中的队列对象中并处理它们 "later." 这导致通过我的服务器的消息流非常混乱。有时看起来我丢失了 ws 消息。我很高兴删除所有这些代码,并在其消息事件处理程序中完全发送每条消息。

Websocket 连接有时会异常关闭。因为网络。您可以使用错误和关闭事件处理程序捕获这些情况。消息的发送者或接收者可能需要一段时间才能检测到某种网络故障中断了其连接。这可能导致发送者和接收者之间对消息计数的分歧。值得研究。

我用消息计数装饰 ws 的连接对象("adorn" -- 添加特定于应用程序的 属性 到对象)并在连接关闭时将这些消息计数放入日志中。