【问题标题】:socket.io multiple chats on one pagesocket.io 在一页上进行多个聊天
【发布时间】:2014-10-14 05:02:41
【问题描述】:

我想在一个页面上实现多个聊天窗口(例如 facebook)。 目前使用“房间”,简化代码:

[客户]

socket.emit('join', 'room1');
socket.emit('join', 'room2');

[服务器]

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

所以客户端上的每个单独的房间,它是一个处理聊天逻辑的单独类,它必须从服务器接收事件仅用于连接的房间。但是如果是一页,则使用一个socket连接,所以如果一个socket连接多个房间,那么订阅一个房间,也会收到另一个房间的事件。我应该如何区分这个?

我正在考虑这些方法:

  1. 为每个房间强制新的套接字连接(所以 10 个聊天 = 10 个套接字),我认为这不是一个好主意,因为负载很高(如果我说的不对,请纠正我)
  2. 客户端事件的前缀,例如,如果我想处理特定房间的事件,我会这样订阅:

[客户]

var room = 'room1';
socket.on(room + '.new_message', function()
{
    // append message to chat
});

[服务器]

io.sockets.in('room1').emit('room1.new_message', 'some message');

这是个好主意吗?

如果有其他方法,请与我分享。

【问题讨论】:

标签: node.js sockets socket.io chat chatroom


【解决方案1】:

一个房间一个插座,多插座没问题。

【讨论】:

    【解决方案2】:

    我认为您只创建一个套接字来连接到服务器。但是一个插座可以加入多个房间。 当服务器发送到客户端时,您必须确定房间发送。 例如:socket.broadcast.to(room).emit(.....{data: idRoom});。 当客户端从服务器接收套接字时。它必须确定 popUp 将接收消息。您可以使用服务器中的 idRoom 来确定 PopUp 接收。
    对不起我的英语

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 2021-11-11
      • 2017-06-06
      • 2021-01-15
      • 2017-06-12
      • 2015-07-20
      • 1970-01-01
      • 2017-11-17
      相关资源
      最近更新 更多