在特定房间收听的Socket.io事件

时间:2014-08-08 02:23:24

标签: 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');

2 个答案:

答案 0 :(得分:2)

" easy"方法是确保您从服务器发出的内容包括有效负载中的房间。

sockets.to(room).emit('update', {room: room, message: 'hello world!'})

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

或者您实现名称空间。

答案 1 :(得分:1)

不幸的是,这在客户端不起作用。 但是你可以在服务器端做到这一点。

服务器设置:

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);
});