请教,如何实现所有用户在一个群组中聊天?

2020-12-24 16:32:14 +08:00
 lucifeSe7En

有这样一个需求,需要 app 的所有用户可以在公屏上进行聊天。因为我们选用的腾讯的即时通讯 im,腾讯那边的群组系统并不能满足我们的需求。app 的用户数量初步预计为>10000 人,腾讯方的群组系统,只有直播群是没有人数限制的,但是有一点,直播群是没有消息记录的。另外几个的群组虽然有历史消息,但是最高也只支持 6000 人的上限。想问问有没有只通过腾讯就能解决的方案?如果没有,其他的解决方案也可以

3888 次点击
所在节点    程序员
40 条回复
coderxy
2020-12-24 18:37:18 +08:00
这种全服的就是可以用聊天室啊,在线就收到,不在线就收不到呗。 或者想的简单一点,用 http,发消息就自己写到数据库里,然后所有在线用户每隔 1S 拉一下最新消息,也能实现。
vizee
2020-12-24 18:37:31 +08:00
用腾讯直播方案,自己再写一个服务端收集直播间消息,给客户端查历史消息用就行了
firefox12
2020-12-24 18:44:25 +08:00
14 万用户 又不是都在线, 消息都在内存里,拉起来很快的,毫无难度。不去实现这种需求是 因为这种需求跑起来根本毫无体验。我能开发出 350 公里的车,谁能开?舒马赫吗?卖给谁呢? 所以谁去造这种车?
dcty
2020-12-24 18:53:11 +08:00
腾讯方的群组系统,只有直播群是没有人数限制的,但是有一点,直播群是没有消息记录的。
=======================================================
用户发送消息的时候往自己的服务器发一份。
另外,消息分发肯定要有策略的,考虑极端情况,一秒内,10000 人都发了消息,客户端接收这么多消息并且进行上屏渲染滚动,手机会成为暖手宝的。
duxiansen
2020-12-24 18:59:23 +08:00
之前不都是吐槽微信群人数限制的太少了,tg 都能支持几十万人,看前面评论,风向咋变了
Lemeng
2020-12-24 19:18:19 +08:00
这样的大群,没意义,两千人的群,还能接受,平日都会信息淹没。人说,群里和你说了,可真没看到,除非是 @过‘才能收到
当然如果僵尸账号多的话,就另当别论了
dimlau
2020-12-24 19:49:14 +08:00
@opengps

「不卡」这里就是指的自己手机不卡顿;延迟是另一码事。

这是相对于一些即时通讯软件大量消息时软件交互就卡来说的。
laminux29
2020-12-24 23:08:02 +08:00
服务器倒是没什么难度,毕竟才万人,从平时的经验来看,会踊跃发言的人很少。

但问题是,客户端能否扛得住压力,而且客户端掉线后,还要拉历史记录,压力全在客户端了。

这个问题就转化为:当客户端性能不足时,如何取舍业务,来优化用户体验。
clayyj1210
2020-12-24 23:38:52 +08:00
@laminux29 服务器倒是没什么难度。。。信息扩散很恐怖。
puzzle9
2020-12-24 23:42:20 +08:00
使用 socket.io
然后 自研
westoy
2020-12-24 23:49:03 +08:00
分布式 MQ + P2P 广播 + 客户端去重

问题是鹅厂都主动规避的业务场景, 你们为啥头铁....
wzzzx
2020-12-24 23:56:07 +08:00
首先应该讨论一下需求的合理性
Maboroshii
2020-12-24 23:58:12 +08:00
作为开发还是讨论一波,虽然楼主问的是腾讯的方案。
客户端当然是要分页拉消息,永远只拉取最新的 n 条新消息然后根据需要往回读。
服务器就先存储后转发就行。
kenanremix
2020-12-25 00:04:59 +08:00
网易的可以,上家公司群里 4w 人 都可以说话
dorothyREN
2020-12-25 00:13:03 +08:00
telegram 群支持 20w 人
yanqiyu
2020-12-25 00:32:44 +08:00
telegram 大概没问题,但是看起来不保证收到消息先后顺序在每个客户端一致
yfwl
2020-12-25 02:41:08 +08:00
这么多人聊天不行,要不弹幕吧 然后不拉历史消息或者留存最近的历史消息
Coolee
2020-12-25 08:48:47 +08:00
几百人的群体验已经很差了,一万人的体验。。。如果能限制 5 秒连续发两条
shunconf
2020-12-25 08:59:40 +08:00
telegram +1 但是你的考虑到所有的用户都有翻墙软件
opengps
2020-12-25 12:51:08 +08:00
@yanqiyu 其实 tg 是个非常简陋的程序,看安装包就知道了,卡,其实有一层原因在于干的事情有点多,比如 qq 多出来的富文本处理,气泡效果,各种自定义动画,甚至贴表情,个顶个的功能都是重武器,没法轻的了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX