为了账号安全,请及时绑定邮箱和手机立即绑定

如何设计和开发一个在线聊天室(1)

标签:
设计 架构

图片描述

基本原理

客户端与服务端的长连接,比如:浏览器中使用的WebSocket、服务端使用的gRPC、其它自定义的TCP协议。

通过实时长连接,客户端和服务端就可以保持实时通信。

客户端可以主动给服务端发送消息,服务端也可以主动给客户端发送消息。

客户端可以给多个用户(群组)发送消息,服务端也可以给多个用户(群组)发送消息。

设计和开发的基本步骤

第一步:

设计和开发当前在线的用户连接池

第二步:

用户发送的消息队列设计和开发

第三步:

设计和开发用户的客户端长链接

第四步:

前后端的处理流程:建立连接、接收消息、发送消息

第五步:

服务端处理:维护长连接、接收消息、处理消息和发送消息

第六步:

客户端处理:维护长连接,接收消息、处理消息和发送消息

第七步:

前后端联调和测试

难点和瓶颈

管理和维护长连接的难度

随着用户的增长,长连接的数量也就会越来越多。

如果只有几万个长连接,问题还不大,如果用户数量超过10万,100万,那么,单机的压力和瓶颈就会很明显。

消息管理的难度

如果每个聊天室限制100人、500人、1000人,这里的消息管理会容易些,也比较可控。

如果一个聊天室不限制人数,比如:在线直播,几万人、十几万人同时在一个聊天室,这里的消息群发就很容易出现消息风暴,无法把及时的所有消息群发出去。

请关注我,这个系列的文章会不断更新,一起来完成这个在线聊天室吧。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2252

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消