有朋友问:
微信如何实现手机端、PC端同时登录,同时收消息?
微信能不能实现,换一个手机,仍能拉取到历史消息?
这是多点登录和消息漫游的问题。
什么是多点登录?
以微信为例,可以PC端,phone端同时登录,同时收发消息。
画外音:需要注意的是,一个端只能登录一个实例,例如同一个QQ号,在pc1上登录,再到pc2上登录,后者会把前者踢出,pc1会收到通知“你已在别处登录xxoo”。
什么是消息漫游?
在任何一个终端的任何一个实例登录,都能够拉取到所有历史聊天消息,这个就是消息漫游。
画外音:微信目前只支持“多点登录”同时收发在线消息,以及最近几条消息的“消息漫游”,没有实现全部消息的“漫游”。
典型即时通讯架构如何?
典型即时通讯架构可以抽象成这么几层:
客户端:例如pc微信,手机qq
服务端:
入口层gate:保持与客户端的连接;
逻辑层logic、路由层router:实现业务逻辑,进行消息的路由;
cache:用来存储用户的在线状态,与接入节点(用户具体连接在哪个gate节点);
db:固化存储消息,群信息,好友关系链等信息;
画外音:都需要考虑高可用,扩展性。
一个典型的消息投递流程如上图步骤1-5: