我正在尝试设置一个服务器,该服务器可以为许多名称空间动态创建许多房间。当新的插座加入该房间时,我目前正试图向该房间的插座广播。
到目前为止,我已经能够广播到特定的名称空间,并且客户端上的事件侦听器接收到该消息。但是,当我尝试广播到具有特定名称空间的房间时,我的事件监听器没有收到该消息。
我已打开调试器模式,并看到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