微信为什么切换设备后无法获取聊天记录
作者:互联网
一直以来,我都对微信的设计有点疑问。
1、微信登录pc端只能通过手机扫码登录。
2、在你更换设备之后,微信的聊天记录完全无法同步,也无法感知是否被好友拉黑。
3、两个同在澳大利亚地区的人进行消息通信几乎瞬间收到。
首先为了满足第三个条件,假想微信在国内建立单点的服务器,那么这种性能一定不足以支撑澳大利亚内这么快的通信,我的猜想是微信是分布式的,在各地都有它的服务器,每次进行消息通信都是由附近的服务器去处理(澳大利亚的服务器之间通信),此时就涉及到了服务器选择算法,你要和好友构成通信,此时就涉及到了服务器查找算法,当建立连接之后你俩就可以互相通信了,可是此时就会出现一个问题,当我坐飞机从飞机飞到加拿大,我的手机全程保持关机状态,到达目的地之后打开微信,此时又是怎么拿到消息的呢?此时微信发现发现原有北京微信服务器已经延迟实在是太高,触发了服务器选择算法。服务器重选后,我很快确定了要连接到新加坡的服务器。但是微信的消息并不会广播满整个分布式集群,新加坡的微信服务器实际上并无法得知我的未读消息。所以必须需要一个服务器端切换算法来实现将我在北京服务器上的未读消息同步到新加坡服务器上。
然后此时第一个问题就很好解释了,如果微信支持密码登录,当我的手机和电脑所在服务器不同,手机上就再也收不到消息了(发送到pc端所连接的服务器上去了)。
微信的聊天记录完全保存在本地,这也可以解释第二个问题:为什么换了设备后聊天记录会全没?因为服务器只是一个中转、传达、暂存功能。在你更换设备后自然本地没有这些数据,就全丢光了。微信的好友列表是怎么维持的?换了设备,好友列表也能正常同步,所以好友列表应该并不是只存本地,而是存在于服务器上的。但是当你被微信好友拉黑时,实际上并没有发出一条消息,所以你的本地的消息历史中,仍然存在有和拉黑了你的好友的消息记录,就像Email发送者即使Block了你的Email,你仍然能够看到你们的聊天历史一样。自然这种设计,就导致你无法得知这件事了。只有在你尝试发送消息时发送失败了,才能证明可能他已经不再想和你说话了。
谢谢观赏
标签:微信,通信,聊天记录,消息,服务器,好友,切换 来源: https://www.cnblogs.com/yyzqianjin/p/14695508.html