我正在编写一个应用程序,使用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元素后,将它们预先添加到正文中。
答案 0 :(得分:0)
如果没有代码示例,我可以想到的一个问题是您没有处理WebSocket PING / PONG帧,因此浏览器会在某些时候认为连接处于非活动状态。
你可以试试这个:https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/websocket/ping