nepster-web
@nepster-web

Почему отваливается событие дисконнект в socket.io?

Есть вполне себе обычная структура на node.js + socket.io:

io.on('connection', function (socket) {

    socket.on('add user', function (hash, interlocutor_id) {

    });

    socket.on('private message', function (from, msg) {

    });

    socket.on('disconnect', function () {

    });
});


Значит смысл в небольшом чате со своими кастомными запросами. Все работает так:
Заходит пользователь, получаем его сокет, проверяем есть ли его user_id в массиве, если нет создает комнату и запихиваем его туда. Если он есть в массиве, обновляем ему сокет.

Значит все работает хорошо до момента, когда я начинаю штормить сервер ф5. Доесть кидаю не большую дос атаку зажатием ф5. В какой-то момент после 20 - 30 запроса событие disconnect просто перестает отрабатывать.

Как раз в этом событии происходит чистка комнат. И получается что комнаты постоянно пополняются дублями.

На стековерфлоу нашел похожий вопрос, где посоветовали сделать так:
var socket = io.connect(':8080', {'sync disconnect on unload': true});


Собственно проблема не решена. Событие disconnect отваливается и отваливается с концами на все последующие запросы, как быть?
  • Вопрос задан
  • 537 просмотров
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега JavaScript
нельзя просто так взять и загуглить ошибку
Как минимум не надо делать так как у вас: https://toster.ru/answer?answer_id=477715
Ответ написан
Ваш ответ на вопрос

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

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