首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个页面上的socket.io多个聊天

一个页面上的socket.io多个聊天
EN

Stack Overflow用户
提问于 2014-08-20 18:01:26
回答 2查看 2K关注 0票数 3

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

客户端

代码语言:javascript
复制
socket.emit('join', 'room1');
socket.emit('join', 'room2');

服务器

代码语言:javascript
复制
socket.on('join', function(room)
{
    socket.join(room);
});

因此,客户端上的每个单独的房间,都是一个单独的类来处理聊天逻辑,它必须只为连接的房间接收来自服务器的事件。但是如果它是一个页面,那么使用一个套接字连接,所以如果一个套接字将连接到多个房间,那么订阅一个房间,也会收到来自另一个房间的事件。我该怎么把这个分开?

我在想这些方法:

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

客户端

代码语言:javascript
复制
var room = 'room1';
socket.on(room + '.new_message', function()
{
    // append message to chat
});

服务器

代码语言:javascript
复制
io.sockets.in('room1').emit('room1.new_message', 'some message');

这是个好主意吗

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

EN

回答 2

Stack Overflow用户

发布于 2015-08-18 14:40:41

一个套接字一个房间,没有问题有多个插座。

票数 0
EN

Stack Overflow用户

发布于 2016-03-25 03:54:54

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

对不起我的英语

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25411481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档