Overview
微信网页版聊天,未采用websocket,而是基于long polling(长轮询)。
客户端消息发送
客户端消息接收(伪服务端推送)
- 客户端间隔性发送http请求sync(每隔)源码; beauty后的源码
- 服务端对该请求延时返回,强制建立长连接
- 当服务端有需要推送的消息,即时在已建立的长连接中返回http response
- 客户端收到response后,立即发送一个新的http request
- goto 2
客户端发送http request
客户端间隔性发送ajax请求
1 | Request URL: https://webpush.wx.qq.com/cgi-bin/mmwebwx-bin/synccheck? |
这是一个服务器端强制保持的长连接。
待看
网页微信的封装,直接在 Electron 里加载微信的网页版,并向其中注入一些代码
网页版微信抓包+注入实现表情贴纸显示
微信网页版的 JavaScript 实现,兼容Node和浏览器,微信机器人
微信网页版的 Python 实现,包含终端版微信及微信机器人
微信抢红包插件–基于安卓
微信聊天功能使用了什么协议?
原理 教程
- 基于TLS1.3的微信安全通信协议mmtls介绍.—by 微信员工
疑问
为什么不采用websocket?
websocket占用资源多?不安全?socket连接数限制?低端浏览器不支持?手机浏览器不支持?
知乎说,是因为懒