Javascript Socket.io事件侦听特定房间

Javascript Socket.io事件侦听特定房间,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我不确定这是否可能,但我真的需要这个功能。 我可以做一些类似于: 客户端 sio = io.connect(url); sio.to('room1').on('update', function(roomName) { console.log(roomName); }); 每当向“room1”发出更新事件时,将触发哪个 服务器端: sockets.to('room1').emit('update', 'room1'); 不幸的是,这不仅仅适用于客户端。 但您可以在服务器端执行此操作

我不确定这是否可能,但我真的需要这个功能。 我可以做一些类似于:

客户端

sio = io.connect(url);
sio.to('room1').on('update', function(roomName) {
    console.log(roomName);
});
每当向“room1”发出更新事件时,将触发哪个

服务器端:

sockets.to('room1').emit('update', 'room1');

不幸的是,这不仅仅适用于客户端。 但您可以在服务器端执行此操作

服务器设置:

sockets.on('connection', function (socket) {
    socket.on('join', function (room) {
        socket.join(room);
    });
});

//...

sockets.to('room1').emit('update', 'room1');
客户:

sio.emit('join', 'room1');
sio.on('update', function (room) {
    console.log(room);
});
“简单”的方法是确保您从服务器发出的信息包括有效负载中的房间

sockets.to(room).emit('update', {room: room, message: 'hello world!'})
最有可能的情况是,您希望在客户端执行相同的操作。 因此,从客户端发送到服务器的消息包含房间标识符,以便消息可以正确路由


或者实现名称空间

感谢您的回复,我如何知道“房间1”上是否激活了“更新”事件?当一个插座位于两个房间中,需要区分其中一个房间的“更新”时,我的问题就出现了。您能找到解决方案吗?