【发布时间】:2019-03-16 12:47:41
【问题描述】:
我正在使用 ws 模块在 NodeJS 上实现 WebSockets 服务器。服务器应每分钟向所有客户端发送一次更新。我已经实现了这个,但我担心它在客户端连接可能停止的情况下的功能。
我担心当与客户端的连接变为非活动状态时会发生什么,例如由于网络连接以不发送 TCP RST 或 FIN 的方式中断。
我有点惊讶send() 方法没有在async 方法中使用await 关键字调用。 send() 方法是否只是将所有要发送的数据排队?如果套接字缓冲区已满,send() 是否会以一种导致其他客户端饥饿而不是被阻塞客户端的方式阻塞?
如果send() 从不阻塞,那么如果数据排队、排队、排队……会发生什么?它可以使用不断增加的无限内存吗?
理想情况下,如果最后一次更新尚未完全发送,我想省略发送每分钟一次的更新。我可以通过ws 模块实现这一点吗?
【问题讨论】:
标签: node.js websocket blocking backpressure ws