【发布时间】:2016-09-08 12:09:04
【问题描述】:
在socket.io 文档中,我看到了一个房间示例
io.on('connection', function(socket){
socket.on('say to someone', function(id, msg){
socket.broadcast.to(id).emit('my message', msg);
});
});
我有一条路线/rooms/:roomId。
是否可以让服务器和客户端之间发送的套接字只命中特定的房间?
我猜服务器应该是这样的
io.on('connection', function(socket){
socket.on('new msg from client', function(roomId, msg){
io.to(id).emit('new msg from server', msg);
});
});
上面和客户端应该发送消息
socket.emit('new msg from client', roomId, msg);
只需使用
即可获得新消息socket.on('new msg from server', function () {
document.getElementById('msgs').appendChild(...);
});
但这会奏效吗?我不应该先用socket.join(...) 加入房间吗?
【问题讨论】:
-
是的,一个套接字需要加入一个房间,然后它会知道进入那个“房间”的所有消息。但是,您可以将 clientID 列表保留在数组中并直接遍历列表。房间是一个很酷的想法,但是有不同的方法可以达到相同的效果。应以示例发布答案。
标签: javascript node.js sockets websocket socket.io