网站首页 文章专栏 IM即时通信架构介绍
IM即时通信架构介绍
编辑时间:2020-08-18 20:38 作者:小铨 浏览量:142



IM即时通信架构介绍


模块解释

一 IM-Server服务端: 
1. 用于接收 Client 连接、消息推送等功能。支持集群部署。 
2. 检测客户端存活状态,心跳时间为300秒/500秒,心跳过快耗电过多,心跳过慢有可能被电信运营(400ms)商切断连接 六星教育 SIXSTAREDU.COM 六星教育-21-IM及时通信概念
3. 设备/用户登录退出操作,更新Redis中的状态 
4. 消息进行双向确认/重传/去重。发送消息后,客户端必须回复ACK确认包,才认为已成功。否则进行重传,客户端对服务器推送的消息进行去重,避免收到重复的消息。 

二 Route消息路由服务器 
1. 检测IM-server的存活状态 
2. 支持权限认证 
3. 根据服务器的状态,按照一定的算法,计算出该客户端连接到哪台IM-server,返回给客户端,客户端再去连接到对应的服务端,保存客户端与IM-server的路由关系 
4. 如果 IM-server宕机,会自动从Redis中当中剔除 
5. IM-server上线后连接到Route,自动加 入Redis 
6. 可以接受来自PHP代码、C++程序、Java程序的消息请求,转发给用户所在的IM-server 
7. 缓存服务器地址,多次查询redis 

三 redis 
1. 存储client的登入信息比如fd 
2. 绑定用户信息 

四 Client客户端 就是模拟websocket层 
1. 消息通讯,及消息应答ack 
2. 心跳保持及断开重连

image.png


流程解释

1. 客户端向 Route 发起登录。 
2. 登录成功从 redis当中选择可用 im-server 返回给客户端,并保存登录、路由信息到 Redis。 
3. 客户端向 im-server 发起长连接,成功后保持心跳。 
4. 客户端下线时清除状态信息。



    出自:铨程互动

    地址:www.wuhequan.cn

    转载请注明出处!


来说两句吧
最新评论
0.078958s