我想在一个页面上实现多个聊天窗口(例如facebook)。 目前正在使用" rooms",简化代码:
[客户]
socket.emit('join', 'room1');
socket.emit('join', 'room2');
[服务器]
socket.on('join', function(room)
{
socket.join(room);
});
所以客户端上的每个单独的房间,它是一个单独的类来处理聊天逻辑,它必须从服务器接收事件,仅用于连接的房间。但如果它是一个页面,则使用一个套接字连接,因此如果一个套接字将连接到多个房间,然后订阅一个房间,也将从另一个房间接收事件。我该如何分开?
我正在考虑这些方法:
[客户]
var room = 'room1';
socket.on(room + '.new_message', function()
{
// append message to chat
});
[服务器]
io.sockets.in('room1').emit('room1.new_message', 'some message');
这是一个好主意吗?
如果是其他方式,请与我分享。
答案 0 :(得分:0)
一个插座一个房间,没有关于多个插座的问题。
答案 1 :(得分:-1)
我认为你只创建一个套接字来连接服务器。但是一个插座可以加入多个房间。 当服务器发送到客户端时,您必须确定发送房间。 例如:socket.broadcast.to(room).emit(..... {data:idRoom});. 当客户端从服务器接收套接字时它必须确定popUp会收到消息。您可以使用Server中的idRoom来确定PopUp接收 对不起我的英文