Выпуск вещания на комнаты Socket.io пространства имен - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь настроить сервер, который может динамически создавать много комнат для многих пространств имен. В настоящее время я просто пытаюсь вещать на сокеты комнаты, когда к ней присоединился новый сокет.

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

Я включил режим отладчика и вижу socket.io-client:socket, генерирующий событие с правильной полезной нагрузкой и типом события. Так что я не уверен, что мне не хватает, так как документация также кажется довольно простой. Любая помощь приветствуется. Ниже мой код.

Сервер

const colorNs = io.of('/color');

colorNs.on('connection', (socket) => {
  const { id } = socket.handshake.query;
  const { id:connId } = socket.conn; 
  if(id) {
    socket.join(id);
    socket.broadcast.to(id).emit('user:connect', { id: connId });
  }

  socket.on('disconnect', () => {
    const { id } = socket.handshake.query;
    const { id:connId } = socket.conn; 
    socket.broadcast.to(id).emit('user:disconnect', { id: connId });   
  });
});

Клиент

const socket = io('/color?id="123"');
socket.on('user:connect', () => console.log('data', data));

Клиент - трассировка отладки

socket.io-parser decoded 2/color,["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}] as {"type":2,"nsp":"/color","data":["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}]} +1ms
browser.js:133
socket.io-client:socket emitting event ["user:connect",{"id":"IZTTPidF121JCzf9AAAO"}] +3ms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...