套接字.特定房间的IO事件监听

Socket.io event listening on a specific room

本文关键字:IO 事件 监听 房间 套接字      更新时间:2023-09-26

我不确定这是否可能,但我确实需要这个功能。我可以这样做吗:

客户端

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!'})

很可能你想在客户端做同样的事情。以便从客户端发送到服务器的消息包含房间标识符,以便消息可以正确路由。

或者实现名称空间。