Когда клиент сокета io повторно подключается к серверу, я отправляю сообщение на сервер, чтобы повторно присоединиться ко всем комнатам, в которых сокет был до его отключения.
Но при отправке событий в эту комнату, где сокет, который должен быть зарегистрирован, клиент не получит никакого события.
При отправке ему индивидуально через экземпляр сокета, полученный из обратного вызова соединения - все в порядке, и он получит событие.
Почему это происходит? Единственный способ заставить его снова получать события - это полностью принудительно перезапустить клиента (refre sh приложение).
Я использую их на сервере:
"socket.io": "^2.1.1",
"socket.io-redis": "^5.2.0",
и это на клиенте:
"socket.io-client": "^2.2.0",
А на сервере я использую адаптер Redis следующим образом:
var server = require('@app/server');
var io = require('socket.io')(server);
var redis = require('socket.io-redis');
io.adapter(redis({
host: 'localhost',
port: 6379
}));
io.set('origins', '*:*');
module.exports = io;
Возможно, проблема в том, что сокет действительно подключается к OLD комнаты или устаревший процесс узла или что-то в этом роде?