Ich schreibe eine App, um Nachrichten von Apache Kafka über einen WebSocket an den Browser zu senden. Wenn der Server Nachrichten für eine Weile nicht konsumiert und der Offset hinterherhinkt, schließt der Websocket nach 1000 oder 2000 Nachrichten. Die Anzahl scheint bei jedem Testlauf zwischen den beiden zu wechseln. Nachrichten sind utf8 und normalerweise ungefähr 130-140 Bytes lang in 8-Byte-Fragmenten.
Wenn der Offset-Wert erhöht wird und Meldungen etwas langsamer eintreffen, dauert dies viel länger, schließt sich aber manchmal nach einer gewissen Zeit auch wieder zufällig.
Auf der Serverseite benutze ich Autobahn mit Twisted, diese kafka-python Bibliothek und nur den nativen WebSocket Objekt auf der Browserseite. Beide Enden erhalten in jedem Fall den Fehlercode 1006 (unerwartet geschlossen).
Ich habe dies zur Zeit nur mit Firefox 31 unter RHEL und OSX getestet. Die Python-Version des Servers ist 2.6.6. Das Upgraden wäre ziemlich schwierig, so dass ich leider nicht sehen kann, ob eine neue Python-Version es behebt; Wenn dies jedoch definitiv das Problem ist, kann es gemacht werden.
Der Code ist im Moment sehr einfach - wenn die Verbindung geöffnet wird, beginnt der Server, Kafka-Nachrichten zu konsumieren und sie auf dem Websocket zu versenden. Der Client fügt sie dem Rumpf voran, nachdem er sie zu einem einfachen span-Element mit jquery hinzugefügt hat.
Ohne ein Codebeispiel ist eines der Probleme, an die ich denken kann, dass Sie nicht mit dem WebSocket umgehen PING / PONG Frames und daher betrachtet der Browser die Verbindung irgendwann als inaktiv.
Sie könnten dies versuchen: Ссылка
Tags und Links python websocket autobahn apache-kafka twisted