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

2024-01-27 12:47:35 浏览数 (2)

基本原理

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

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

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

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

设计和开发的基本步骤

第一步:

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

第二步:

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

第三步:

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

第四步:

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

第五步:

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

第六步:

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

第七步:

前后端联调和测试

难点和瓶颈

管理和维护长连接的难度

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

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

消息管理的难度

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

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

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

0 人点赞