Я пишу приложение для потоковой передачи сообщений в браузер из Apache Kafka с использованием WebSocket. Когда сервер какое-то время не использует сообщения и смещение отстает, веб-сокет закрывается после 1000 или 2000 сообщений. Число, кажется, чередуется между двумя при каждом тестовом прогоне. Сообщения имеют формат utf8 и обычно имеют длину около 130-140 байт в 8-байтовых фрагментах.
Когда смещение достигнуто и сообщения поступают немного медленнее, это длится намного дольше, но все равно иногда закрывается случайным образом после того, как какое-то время было открыто.
На стороне сервера я использую Autobahn с Twisted, эту библиотеку kafka-python и только собственный объект WebSocket на сторона браузера. Оба конца получают код ошибки 1006 (неожиданное закрытие) в каждом случае.
В настоящее время я тестировал это только с Firefox 31 на RHEL и OSX. Версия Python сервера — 2.6.6. Обновление будет довольно сложным, поэтому, к сожалению, я не могу просто посмотреть, исправляет ли это новая версия Python; однако, если это определенно проблема, это можно сделать.
На данный момент код очень прост: когда соединение открывается, сервер начинает принимать сообщения Kafka и отправлять их через веб-сокет. Клиент добавляет их к телу после добавления его к простому элементу span с помощью jquery.