WebSocket закрывается после 1000 сообщений

Я пишу приложение для потоковой передачи сообщений в браузер из 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.


person Alex S    schedule 17.09.2014    source источник
comment
у вас есть пример кода для этого?   -  person Rafael Barros    schedule 20.05.2015


Ответы (1)


Без примера кода одна из проблем, о которой я могу думать, заключается в том, что вы не обрабатываете WebSocket PING/PONG кадров и поэтому браузер считает соединение в какой-то момент неактивным.

Вы можете попробовать это: https://github.com/tavendo/AutobahnPython/tree/master/examples/twisted/websocket/ping

person Wavey    schedule 28.08.2015