Flask-SocketIO: сообщения приходят только на ping_interval - PullRequest
0 голосов
/ 24 января 2019

Я использую Flask-SocketIO для передачи сообщений из системы на базе ZeroMQ в браузерные клиенты, говорящие на веб-сокетах.Предполагается, что это тонкая оболочка.

Однако я обнаружил, что, хотя соединение было обновлено (через браузер) до веб-сокета, сообщения, отправляемые через socketio, фактически не доставляются по проводам, кроме случаев, когдабраузер отправляет пинг каждые 25 секунд.

С уменьшением параметра socketio ping_interval до 1 я фактически возвращаюсь к опросу.На снимке экрана ниже показан 25-секундный интервал и сообщения, поступающие только после опроса с порядковым номером.


class Receiver(threading.Thread):
   ...
   def onMessageReceived(msg):
   socketio.emit('msgtype', msg.toJson())

app = flask.Flask(__name__, root_path=root + "/dashboard/")
socketio = SocketIO(app, logger=log, async_mode=async_mode, ping_interval=1.5)
thread = socketio.start_background_task(receiver)
socketio.run(app, host='localhost', port=8000)

Почему flask-socketio / engineio не отправляет сообщения сразу?

debug inspector

...