下载后可任意编辑聂永的博客记录工作/学习的点点滴滴
微信协议简单调研笔记前言微信可调研点很多,这里仅仅从协议角度进行调研,会涉及到微信协议交换、消息收发等
所谓“弱水三千,只取一瓢”吧
杂七杂八的,有些长,可直接拉到最后看结论好了
微信协议概览微信传输协议,官方公布甚少,在微信技术总监所透漏 PPT《微信之道—至简》文档中,有所体现
纯个人理解:因张小龙做邮箱 Foxmail 起家,继而又做了 QQ Mail 等,QQ Mail 是国内第一个支持 Exchange ActiveSync 协议的免费邮箱,基于其从业背景,微信从一开始就实行基于 ActiveSync 的修改版状态同步协议 Sync,也就再自然不过了
一句话:增量式、按序、可靠的状态同步传输的微信协议
大致交换简图如下:下载后可任意编辑如何猎取新数据呢:1
服务器端通知,客户端猎取2
客户端携带最新的 SyncKey,发起数据请求3
服务器端生成最新的 SyncKey 连同最新数据发送给客户端4
基于版本号机制同步协议,可确保数据增量、有序传输5
SyncKey,由服务器端序列号生成器生成,一旦有新消息产生,将会产生最新的SyncKey
类似于版本号服务器端通知有状态更新,客户端主动猎取自从上次更新之后有变动的状态数据,增量式,顺序式
微信 Web 端简单调试在线版本微信:下载后可任意编辑https://webpush
weixin
com/通过 Firefox + Firebug 组合调试,也能证实了微信大致通过交换 SyncKey 方式猎取新数据的论述
发起 GET 长连接检测是否存在新的需要同步的数据会携带上最新 SyncKeyhttps://webpush
weixin
com/cgi-bin/mmwebwx-bin/synccheck
callback=jQuery183060