Socket.IO: Какой шаблон рекомендуется для очистки на стороне сервера?

Достаточно ли выполнить очистку при отключении? Что произойдет, если браузер исчезнет перед отправкой явного отключения?

Каков рекомендуемый шаблон для очистки на стороне сервера, чтобы ресурсы, связанные с соединением, не просачивались (например, пространство имен)?

(используя gevent-socketio, если это важно)

1 ответ

Решение

Если вы используете WebSockets в качестве транспорта, он автоматически отключит сокет при закрытии браузера. Например, если вы используете xhr-опрос, он не отключится автоматически (говоря о gevent-socketio).

Мой подход при использовании xhr-polling был:

  1. Сохранение идентификатора сеанса сокета среди зарегистрированных пользователей в базе данных
  2. При следующем входе в систему определите, существует ли такая запись
  3. Используйте сохраненный идентификатор сеанса в записи, чтобы отключить неиспользуемый сокет, так как новый логин пользователя будет генерировать новый сокет

Это не быстрое решение, поскольку у вас могут быть подключены неиспользуемые сокеты до тех пор, пока пользователь не выполнит новый вход в систему, но он выполняет своего рода очистку, когда пользователь входит в систему.

Эта статья может быть подсказкой к чему-то более творческому, чем моё решение: http://flask.pocoo.org/snippets/71/

Другие вопросы по тегам