WebSocket 在 1000 条消息后关闭

Posted

技术标签:

【中文标题】WebSocket 在 1000 条消息后关闭【英文标题】:WebSocket closes after 1000 messages 【发布时间】:2014-11-11 20:05:59 【问题描述】:

我正在编写一个应用程序,使用 WebSocket 将消息从 Apache Kafka 流式传输到浏览器。当服务器有一段时间没有消费消息并且偏移量落后时,websocket 在 1000 或 2000 条消息后关闭。每次测试运行时,数字似乎都会在两者之间交替。消息是 utf8,通常在 8 字节片段中长度约为 130-140 字节。

当偏移量被赶上并且消息以稍慢的速度进入时,它会持续更长的时间,但有时仍然会在打开一段时间后随机关闭。

在服务器端,我使用带有 Twisted 的 Autobahn,这个 kafka-python 库,以及浏览器端的原生 WebSocket 对象。在每种情况下,两端都会收到 1006 错误代码(意外关闭)。

我目前只在 RHEL 和 OSX 上使用 Firefox 31 对此进行了测试。服务器的python版本是2.6.6。升级会相当困难,所以不幸的是我不能只看一个新的 python 版本是否修复它;但是,如果这绝对是问题,它可以做到。

目前的代码非常简单——当连接打开时,服务器开始使用 Kafka 消息并将它们发送到 websocket 上。客户端在使用 jquery 将其添加到简单的 span 元素后,将它们添加到正文中。

【问题讨论】:

你有这方面的代码示例吗? 【参考方案1】:

如果没有代码示例,我能想到的问题之一是您没有处理 WebSocket PING / PONG 帧,因此浏览器在某些时候认为连接处于非活动状态。

你可以试试这个:https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/websocket/ping

【讨论】:

以上是关于WebSocket 在 1000 条消息后关闭的主要内容,如果未能解决你的问题,请参考以下文章

发送几条消息后,WebSocket readyState 停留在 0

除非收到另一条消息,否则 Websocket 客户端在握手后无法发送

websocket前端发送一个消息 后端还没执行完 收不到第二条消息

传输了几条消息后,ASP.NET MVC 4.5 WebSocket 服务器失去连接

关闭连接到 Mojo websocket 的 Mojo::IOLoop 重复事件

为啥我的 websocket 在几分钟后关闭?