@Sazoks

Как удалить клиента из комнаты при отключении сокета?

Доброго дня!
Есть стандартная функция отключения клиента от комнаты:
def __client_leave_room(self, data):
        """
        Метод отключения клиента от комнаты.
        :param data: Данные пользователя. Приходят с клиента.
        :return:
        """

        username = data["username"]
        name_room = data["room"]

        if name_room not in self.__list_rooms:
            # Ошибка, такой комнаты нет.
            pass

        leave_room(name_room)
        print(f"{username}'s disconnected from {name_room}")


Забыл сказать о том, что это вовсе не функция, а метод в классе. Он рабочий.

Проблема в том, что она хорошо работает, когда юзер нажимает на клиенте кнопку "Disconnect", но если он закроет, обновит или уйдет со страницы, тогда эта функция не срабатывает, хотя на клиенте я прописал это:

socket.on("disconnect", function() {
    socket.emit("leave", {username: username, room: room});
});


Заранее спасибо за ответы!
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bacon
Скорее всего надо ловить на сервере событие on_disconnect или подобное, которое представляет библиотека
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы