Как сохранить сеанс клиента в сокете IO-соединения в течение длительного времени - PullRequest
0 голосов
/ 14 февраля 2019

Я использую Flask-socketio python в качестве сервера и Javascript Socket-io в качестве клиента.

Во время события emit со стороны сервера клиент отключается и снова подключается.

В связи с этимвыброс разъединения не происходит правильно.

Как сохранить сеанс живым или избежать отключения?

И еще одна информация, которую я пытался проверить на win 7 pc, и не было никаких проблем,Однако на win 10 pc проблема появляется каждый раз.
Это связано с ОС?

1 Ответ

0 голосов
/ 22 апреля 2019

Я предполагаю, что ваше событие emit занимает некоторое время после вызова обработчика события (возможно, обработка некоторых данных и т. Д.).Если это так, то увеличение параметра ping_interval при создании экземпляра socketio решит эту проблему.Сервер ожидает, что клиент будет отправлять ping каждый «ping_interval» (по умолчанию = 25 секунд), и, предполагая, что ваше внешнее приложение не отправляет эти ping, сервер флешки socketio предполагает, что клиент ушел через 25 секунд, и отключает его.Но время обработки в обработчике событий составляет более 25 секунд, и когда пришло время отправлять данные, вы видите сообщение о разъединении, так как нет клиента, который должен быть отправлен.

Вам нужно изменить это значение на большее, чтобы оно заработало.

socketio = SocketIO(app, ping_interval=50)

...