向名称空间的Socket.io房间发布广播

时间:2019-01-22 17:21:07

标签: websocket socket.io

我正在尝试设置一个服务器,该服务器可以为许多名称空间动态创建许多房间。当新的插座加入该房间时,我目前正试图向该房间的插座广播。

到目前为止,我已经能够广播到特定的名称空间,并且客户端上的事件侦听器接收到该消息。但是,当我尝试广播到具有特定名称空间的房间时,我的事件监听器没有收到该消息。

我已打开调试器模式,并看到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

0 个答案:

没有答案