首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >socket.io私人聊天和群聊

socket.io私人聊天和群聊
EN

Stack Overflow用户
提问于 2013-02-21 10:02:29
回答 1查看 1.8K关注 0票数 0

我正在尝试用socket.io创建一个google/facebook聊天的克隆。

当用户连接到服务器时,我将用户放在一个以用户ID命名的房间中(因此,如果用户打开了多个选项卡,则所有选项卡都会转到同一个房间,并在所有选项卡中接收消息)。当A向B发送消息时,我将其广播到以B命名的房间。在UI中,我有每个带有发送者ID的聊天窗口,因此当用户收到消息时,我会找到带有发送者ID的窗口,并用新消息更新该窗口。很简单。

现在,A和B邀请C和D加入群聊。所以聊天变成了群聊。我被困在这里了。我该如何处理这种情况呢?如何在客户端UI和服务器中跟踪聊天?

EN

回答 1

Stack Overflow用户

发布于 2013-02-21 17:14:05

您可以始终将组命名为聊天中按某个任意值(如id)排序的用户的串联(带有某个分隔符)。因此,如果您有ID为USERA的用户A和ID为USERB的用户B,则包含它们的房间将是USERA-USERB。(请注意,只有当userID中没有破折号时,此模式才有效)。当用户C加入聊天时,打开一个ID为USERA-USERB-USERC的房间,将所有用户添加到该房间,并将上一次对话中的消息重新广播回用户。

注意:这将为UserA和UserB打开一个新的对话,这可能不是您想要的。在这种情况下,您必须找到一种方法来对房间进行混洗,以便更改房间ID (您必须对此进行一些考虑),然后将最后x条消息重新广播给新用户。

另外,您必须发送与发送给客户端的所有事件相关联的房间id,以便客户端知道该事件与哪个聊天有关。

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

https://stackoverflow.com/questions/14999352

复制
相关文章
使用socket.io开发简单群聊功能
1、新建package.json文件: { "name": "socket-chat-example", "version": "0.0.1", "description": "my fi
用户1141560
2017/12/26
1.1K0
即时通讯(im)框架/系统开发思考(1)-通讯协议选型
1.前言: 近来笔者接到公司的一个IM开发需要,要在原来的Web业务系统、移动端系统上加入一个即时聊天的功能,具有就是能聊天就行。相信各位也会接到需要开发IM的系统的任务,那么,开发一个im系统应选用
E聊SDK
2020/06/14
2.9K0
群聊比单聊,凭什么复杂这么多?
群聊是多人社交的基本诉求,一个群友在群内发了一条消息,期望做到: (1)在线的群友能第一时间收到消息; (2)离线的群友能在登陆后收到消息; 群消息的实时性、可达性、离线消息的复杂度,要远高于单对单消息。 常见的群消息流程如何? 群业务的核心数据结构有两个。 群成员表: t_group_users(group_id, user_id) 画外音:用来描述一个群里有多少成员。 群离线消息表: t_offine_msgs(user_id, group_id, sender_id,time, msg_id, msg
架构师之路
2022/09/22
6730
群聊比单聊,凭什么复杂这么多?
spring websocket 和socketjs实现单聊群聊,广播的消息推送详解
随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。
Dream城堡
2018/09/10
2.1K0
spring websocket 和socketjs实现单聊群聊,广播的消息推送详解
全开源即时通讯(IM)系统-仿微信
E聊SDK目标是打造一个免费开源,接入简单,适应多平台的即时通信SDK,为广大开发者提供便利。
E聊SDK
2020/06/11
4.6K0
socket.io
本译文来源于https://socket.io/get-started/chat/,不足之处请多批评指正。 最近在学些vuejs和websocket相关技术,使用了websocket的两个封装的库vue-socket.io和vue-websocket
ccf19881030
2020/04/10
3.9K0
socket.io
深入浅出即时通讯(1)_即时通讯协议对比
业界上用来做即时通讯的解决方案有:1. 基于http 的轮询; 2. 基于websocket 长连接; 3. 基于tcp或udp的自定义协议, 这种若在要在Web端使用, 需要套一层websocket 封装. 此外早期还有基于Comet 技术的长连接,基于xmpp 的开源客户端应用等。
E聊SDK
2022/05/17
3.1K0
feed留,单聊群聊,系统通知,状态同步,到底是推还是拉?
可以理解为一个发布订阅业务,典型业务是微博(朋友圈)。你关注了姚晨的微博,姚晨发布了消息,你的主页能看到她最新发布的消息,这个场景是推送,还是拉取呢?
架构师之路
2018/07/27
1.4K0
socket.io初了解
server.js const express = require('express'); const app = express(); const http = require('http'); const server = http.createServer(app); const { Server } = require("socket.io"); const io = new Server(server); app.get('/', (req, res) => { res.sendFile(
用户4792657
2022/07/06
4620
微信小程序的socket.io即时通讯开发(基于E聊SDK)
由于微信小程序需要开发轻量,跨平台,开发时间短等特点,许多公司将小程序作为了业务展示的第一个APP。E聊客户端核心SDK 通讯部分已适配了微信小程序平台,下面分享一下适配过程中的思路与方法。
E聊SDK
2020/06/14
1.8K0
用node搞一个聊天室
在工作中用到的node除了打包和nuxt.js之外还没有用到node。今天用node搞了一个简单的聊天室,目录结构如下:
用户3258338
2019/10/23
5450
【通信】前端中的几类数据交互方式
服务器 res.setHeader(‘Access-Control-Allow-Origin’,‘*’);
前端修罗场
2023/10/07
3060
【通信】前端中的几类数据交互方式
socket.io的websocket示例
写了一个简单的demo,直接上代码吧。用的时候注意一下版本号,可能 socket.io 的 API 有修改~
meteoric
2018/12/28
1.2K0
WebSocket系列之socket.io
上篇讲了WebSocket基础知识和浏览器端的实现,WebSocket server和http server也是有区别的,这篇开始讲nodejs平台的一个很成熟,知名度也最大的WebSocket实现--socket.io
肖乐
2018/01/15
6.6K1
WebSocket系列之socket.io
C++搭建集群聊天室(十四):群聊功能
1、创建群聊,提交群信息,返回群号 2、拉取群人员基本信息,包括昵称、ID。 3、群发消息时,如果成员在线则直接推送,成员不在线则存储相应群员的离线消息。
看、未来
2021/09/18
1.1K0
003_001 Python 计算昨天和
中国 1395327738.08 time.struct_time(tm_year=2014, tm_mon=3, tm_mday=20, tm_hour=15, tm_min=2, tm_sec=18, tm_wday=3, tm_yday=79, tm_isdst=0) Thu Mar 20 15:02:18 2014 time.struct_time(tm_year=2014, tm_mon=3, tm_mday=20, tm_hour=23, tm_min=2, tm_sec=18, tm_wday=3, tm_yday=79, tm_isdst=0) 20140320 23:02:18+中国标准时间 0 1 2014-03-20 23:02:19.084000 2014-03-20 23:02:19.084000 2015.03.20 -365 days, 0:00:00 2.33333333458 2.333333334578899798117390673724003136157989501953125 2.3333333345789 0.142857 today 2014-03-20 yestoday 2014-03-19 tomorrow 2014-03-21
py3study
2020/01/09
3110
C++搭建集群聊天室(十二):用户单聊及离线消息处理功能实现
开一个专门处理离线消息的文件,offlinemessagemodel.cpp,头文件配上。
看、未来
2021/09/18
5410
私人ftp搭建
原因:2017年2月8日 星期三 随笔记录 说明:仅供个人学习。 原因 平时开发一直用Mac,台式机闲置,故将较大的文件迁移过去提高效率。 配置 win10自带方式 系统为win10 64位周年版,打开控制面板 -> 程序 -> Internet信息服务 ->打开FTP服务与FTP扩展及IIS管理控制台 -> 点击确认并等待 ->打开IIS控制台 -> 添加FTP站点 -> 输入信息 我这里台式机独用路由器不在公网内,配置好端口与ip后,路由器设置端口转发,譬如台式机ip为192.168.1.2 ,路由器i
ZHaos
2019/02/27
4.4K0
Response私人订制
STEP-2: 参照Templates中的样例,拷贝和添加新的返回状态码,以添加504状态码为例;
用户5521279
2019/07/15
2.1K0
Response私人订制
深度学习的昨天、今天和明天
机器学习是人工智能领域的一个重要学科。 自从20世纪80年代以来, 机器学习在算法、理论和应用等方面都获得巨大成功。2006年以来, 机器学习领域中一个叫“ 深度学习” 的课题开始受到学术界广泛关注, 到今天已经成为互联网大数据和人工智能的一个热潮。 深度学习通过建立类似人脑的分层模型结构, 对输入数据逐级提取从底层到高层的特征, 从而能很好地建立从底层信号到高层语义的映射关系。 近年来,谷歌、微软、IBM、百度等拥有大数据的高科技公司相继投入大量资源进行深度学习技术研发, 在语音、图像、自然语言、在线广告等领域取得显著进展。从对实际应用的贡献来说, 深度学习可能是机器学习领域最近这十年来最成功的研究方向。将对深度学习发展的过去和现在做一个全景式的介绍, 并讨论深度学习所面临的挑战, 以及将来的可能方向。
计算机视觉研究院
2018/11/23
9810

相似问题

群聊到私人聊天Whatsapp风格的功能

16

数据库设计:私人聊天、群聊和电子邮件

21

与socket.io进行私人聊天

23

socket.io -包括私人和公共信息

20

使用Socket.IO向用户发送私人消息

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文