im设计
IM-server服务端:
1、用于接收 Client 连接、消息推送等功能。支持集群部署。
2、检测客户端存活状态,心跳时间为300秒/500秒,心跳过快耗电过多,心跳过慢有可能被电信运营商切断连接
3、设备/用户登录退出操作,更新Redis中的状态
4、消息进行双向确认/重传/去重。发送消息后,客户端必须回复ACK确认包,才认为已成功。否则进行重传,客户端对服务器推送的消息进行去重,避免收到重复的消息。
2、Route消息路由服务器:
1、检测IM-server的存活状态
2、支持权限认证
3、根据服务器的状态,按照一定的算法,计算出该客户端连接到哪台IM-server,返回给客户端,客户端再去连接到对应的服务端。
4、如果 IM-server宕机,会自动从Redis中当中剔除
5、IM-server上线后连接到Route,自动加 入Redis
6、可以接受来自PHP代码、C++程序、Java程序的消息请求,转发给用户所在的IM-server