我希望每2分钟向用户推送一次数据。使用EventSource需要每29秒额外推送一个空字节以保持连接打开。WebSocket不需要这样的ping。为什么EventSource连接定期关闭并重新打开?是因为HTTP中没有好的内置方法来检查连接是否仍然打开还是其他原因?
Server-Sent事件(事件源)API在HTTP上分层。WebSocket是在TCP上分层的(但具有与HTTP兼容的握手)。HTTP和TCP通常都有空闲超时,然而,TCP超时往往要长得多(例如,2小时而不是2分钟)。因此,您可能仍然需要在WebSockets中保持活动消息,但它们可能不那么频繁。此外,WebSocket标准定义了浏览器/服务器可能为您实现的乒乓帧。
这可能取决于您的服务器端软件
node.js有2分钟的默认超时
这是关于它的文章-http://contourline.wordpress.com/2011/03/30/preventing-server-timeout-in-node-js/
解决方案:
res.connection.setTimeout(0); // this could take a while