Socket io не получает события после переподключения в комнатах - PullRequest
0 голосов
/ 03 августа 2020

Когда клиент сокета 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 комнаты или устаревший процесс узла или что-то в этом роде?

...