一页上的socket.io多个聊天 [英] socket.io multiple chats on one page

查看:97
本文介绍了一页上的socket.io多个聊天的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to implement multiple chat windows on one page (like facebook for e.g.). Currently using "rooms", simplified code:

[客户]

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

[服务器]

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

因此客户端上的每个单独房间,都是处理聊天逻辑的单独类,必须接收来自服务器的事件仅针对连接的房间。但是如果是一页,则使用一个套接字连接,因此,如果一个套接字将连接到多个房间,然后订阅一个房间,则还将接收来自另一个房间的事件。我应该如何区分呢?

so each separate room on client, it is a separate class that handles the chat logic, it must receive events from server only for connected room. But if it is one page, then one socket connection used, so if one socket will connect to multiple rooms, then subscribing to one room, will also receive events from another room. How should I separate this?

我正在考虑以下方式:


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

这是个好主意吗?

推荐答案

一个插槽一个房间,拥有多个插槽没有问题上。

One socket one room, no problem about having multiple sockets on.

这篇关于一页上的socket.io多个聊天的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆