这两(liang)天兰州人的圈子都在盛传自己的微(wei)信被别人莫名登陆了,这里要说的是,别信!
先粗浅(qian)的说说通信协议,微(wei)信大概率是UDP和TCP两种协议都用(yong)的,但也有一种可能是(shi)微信在通讯中使用了HTTP短连接和TCP长连接,并没有用到UDP,其应用(yong)的场景是:登陆验证和头像身份信息等(deng)功能采用的HTTP,文本消息、语音消息、视频消息、图片消(xiao)息这些使用的是TCP长连(lian)接。通过心跳包来维护长连接状(zhuang)态,300s一个心跳(tiao)。
这(zhe)里UDP和TCP的概念有点(dian)复杂,非专业人士可(ke)忽略这一段,直接看下文。
当然我们也不是(shi)腾讯,所以对他们的协议应用场(chang)景也只是推测,想深入了解的小伙(huo)伴也可以自行探索。
兰州人的疑惑(huo)主要来源于,通过微信—我—设置—账(zhang)号与安全—登陆过的设备来查看,发现(xian)在这两天似乎莫名的出现了(le)不是自己手动操作的登陆(lu)怀疑。
这个问题我们就以微(wei)信为安卓系统版本的后台应(ying)用为例来做个解释(shi)。
一般为了保证用(yong)户在使用微信应用时的稳定便捷性,微(wei)信会确保它的客户端在安卓(zhuo)手机后台的保活性,这个保活(huo)有两部分,一个是微信网络连(lian)接的保活,用以确保微信消息接收的(de)实时性,另一个(ge)是微信应用进程的保活,用以尽(jin)量确保应用进程不被安卓系统回收。
我们先来看网(wang)络连接的保活。
这里的概念手(shou)段有很多,也较为专业,咱们挑保活手段的重(zhong)点来理解,主要说明微信应用程序(xu)的心跳机制和长连接。
什么是心跳机制?就是微信应用程(cheng)序会定时发送一(yi)个自定义的结构体(心跳包),让对方知道自己还活(huo)着,以确保程序连接(jie)有效性的机制。
什么是长连接?微信为(wei)了确保用户消息的实时性,通(tong)过长连接的手段来保证。
我们通俗的再啰嗦下(xia),你手机上的微信客户端会定时给微(wei)信服务器后台发送(song)一个心跳包,让服务(wu)器知道你的微信状态还在(zai)线,以确保服务器和你微信的有效连接(jie)。同时,为了确保你发(fa)送消息的实时性(xing),微信还会通过长连接的方法来保证(zheng)。
com长连接的手(shou)段怎么确保我们消息的实时同步(bu),有一个接口标准(zhun)叫Sync CGI,翻译(yi)成中文就是同步接(jie)口标准,应用到微信上,就是你微信客户端和(he)服务器后台的之间(jian)的数据同步标准。
微信会通过这个接口直(zhi)接请求服务器的(de)后台数据,同时比对后(hou)台数据值,判断该下发哪些消息,从(cong)而使你的微信消息发布和接收(shou)都处在实时最新的(de)状态。
再来说说进程保活。
在安卓系统里,微信应用程序被终止的主(zhu)要原因大概有系统(tong)回收内存、人为触发中(zhong)止和手机自身读写执行权(quan)限三种。
目前(qian),人为操作和手机读写(xie)执行权限造成的微信应(ying)用终止,微信没(mei)有做任何的特殊应对处理。
但对于系统回收内存情况造成的微信应(ying)用进程终止情况(kuang),会做一定保活处理。
好了,虽然说的不(bu)全面,但说到这(zhe)里,看得懂看不懂的大概也都(dou)多少了解了微信为啥实时高效的(de)原因。
也就是说,我们微信后台登(deng)陆过的设备里面出现的莫名(ming)登陆,并非莫名登陆。
举例,昨晚上(shang)半夜,你明明在熟(shu)睡中,但今天看微信后台,竟然出(chu)现了一条半夜登陆的(de)记录,有些还不止一(yi)次,而是多次。
你开始(shi)纳闷啊,你并没有手动登(deng)陆,那么是谁登陆了你的微信呢?
其实,这不(bu)过是你的手机发现你的微信(xin)占用内存后自动回收内存终(zhong)止了微信的在线状态(tai),而微信为了保持消息的(de)实时性,在识别了你的登陆设(she)备没有变化确保是你登陆无(wu)疑后,自动拉起了微信应用与服务器(qi)数据的连接。
当然了,如果你觉得(de)不信,你可以选择退出微信再试(shi)试看,在你退出和再次登陆(lu)的时间段内,肯定只有你自己人为操(cao)作的登陆记录。
我们大多数(shu)人的手机使用习惯(guan)是长时间不关机,对于微信也是,一(yi)般不会退出再登陆,所(suo)以微信被莫名登陆的恐慌,大可不必(bi)!
最后,本文综合参考网友@M&G @刘云 @杨干荣 真知灼见,在此致谢!
因招文袋公众(zhong)号注册较晚,没有留言功能,如果大家(jia)还有疑问,欢迎点击本文右下角在看留(liu)言评论,我会在第一时间回应。