javascript - webqq是如何实现通讯的 ?
PHPz
PHPz 2017-04-10 14:23:03
0
4
474

怎么实现对后端的通讯交互的,长连接吗?

PHPz
PHPz

学习是最好的投资!

全部回复(4)
Ty80

基本流程是这样的, 登录webqq后会启动一个ajax请求, 连接到后台的消息获取接口, 这个接口的超时时间大概是1分钟, 如果在这一分钟内,有一个或多个消息进来,服务器会马上带上这些消息包装一下返回, 然后交由客户端流量器的js来处理, 如果这一分钟内没有任何消息, 服务端额也会返回,客户端会重新建立到消息获取接口的连接,等待下一次消息或者超时的到来.如此往复,直到退出. 本质上这就是一个消息循环的模式,很容易理解.

https://github.com/alex8224/webqq-console/blob/master/doc/qq.rst 中对webqq 3.0的协议做了一些分析和尝试实现, 给你参考,不过目前这个已经不能工作了,有兴趣的话自己改一下.

Ty80

叫什么不知道, 应该是长连接之类的吧。

跟微信 web 版原理一样,客户端浏览器向服务器 Ajax 请求内容, 服务器始终挂起这个请求(客户端一直在等着)。这样下去有两种可能:1,服务端发现有消息需要向客户端发送,立刻把这个请求返回了,附带了许多的数据,客户端自行处理。2,该登陆用户一直没有新消息,这个请求超时了。

无论两种中的哪一种,客户端都立刻发起下一次请求,服务器照旧挂起,如此反复,始终维持至少一个挂起的连接,让服务器可以随时返回数据。

这种方式比循环发送请求高级一点的地方在于,服务器需要维护这个连接状态。

大家讲道理

长轮询

伊谢尔伦

为什么不是socket???

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!