为什么要每隔一段时间向WebSocket服务器发送一个空字符串



以下片段来自一个js文件,该文件使用本地WebSocketapi来流式传输图像。该文件被缩小和放大,我无法访问原始代码。

setInterval(function () { n && n.send("")},
NETWORK.websocketSendMessage)

n是一个初始化为本地WebSocket连接对象的对象,该对象流式传输base64编码的jpeg。间隔时间是一个常数,设置为1000ms。

据推测,这会触发服务器每秒发送一组帧,这将异步触发ws对象上的onmessage处理程序集。

我试图理解为什么这个间隔是必要的——在我的理解中,使用WebSocket应该从一开始就不需要使用这种原始轮询(尽管我认为这显然比每秒使用新http请求的实际轮询更快(。

客户端不应该更新它希望继续接收内容的服务器。相反,在我看来,一种更合乎逻辑的方法是宣布内容何时应该停止

这可能是一种控制ram的技术吗?onmessage处理程序似乎在每次触发时都会拆除数据的解析器——这会反过来释放最终gc流式文件使用的ram吗?

请记住,这可能是古老的遗留代码,因此了解浏览器的怪癖可能会很有见地。

keepalive是一种由一个设备发送到另一个设备的消息,用于检查两者之间的链接是否正在运行,或者防止链接断开。你可以在这里阅读更多信息https://en.wikipedia.org/wiki/Keepalive

最新更新