84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
怎么实现对后端的通讯交互的,长连接吗?
学习是最好的投资!
基本流程是这样的, 登录webqq后会启动一个ajax请求, 连接到后台的消息获取接口, 这个接口的超时时间大概是1分钟, 如果在这一分钟内,有一个或多个消息进来,服务器会马上带上这些消息包装一下返回, 然后交由客户端流量器的js来处理, 如果这一分钟内没有任何消息, 服务端额也会返回,客户端会重新建立到消息获取接口的连接,等待下一次消息或者超时的到来.如此往复,直到退出. 本质上这就是一个消息循环的模式,很容易理解.
https://github.com/alex8224/webqq-console/blob/master/doc/qq.rst 中对webqq 3.0的协议做了一些分析和尝试实现, 给你参考,不过目前这个已经不能工作了,有兴趣的话自己改一下.
叫什么不知道, 应该是长连接之类的吧。
跟微信 web 版原理一样,客户端浏览器向服务器 Ajax 请求内容, 服务器始终挂起这个请求(客户端一直在等着)。这样下去有两种可能:1,服务端发现有消息需要向客户端发送,立刻把这个请求返回了,附带了许多的数据,客户端自行处理。2,该登陆用户一直没有新消息,这个请求超时了。
无论两种中的哪一种,客户端都立刻发起下一次请求,服务器照旧挂起,如此反复,始终维持至少一个挂起的连接,让服务器可以随时返回数据。
这种方式比循环发送请求高级一点的地方在于,服务器需要维护这个连接状态。
长轮询
为什么不是socket???
基本流程是这样的, 登录webqq后会启动一个ajax请求, 连接到后台的消息获取接口, 这个接口的超时时间大概是1分钟, 如果在这一分钟内,有一个或多个消息进来,服务器会马上带上这些消息包装一下返回, 然后交由客户端流量器的js来处理, 如果这一分钟内没有任何消息, 服务端额也会返回,客户端会重新建立到消息获取接口的连接,等待下一次消息或者超时的到来.如此往复,直到退出. 本质上这就是一个消息循环的模式,很容易理解.
https://github.com/alex8224/webqq-console/blob/master/doc/qq.rst 中对webqq 3.0的协议做了一些分析和尝试实现, 给你参考,不过目前这个已经不能工作了,有兴趣的话自己改一下.
叫什么不知道, 应该是长连接之类的吧。
跟微信 web 版原理一样,客户端浏览器向服务器 Ajax 请求内容, 服务器始终挂起这个请求(客户端一直在等着)。这样下去有两种可能:1,服务端发现有消息需要向客户端发送,立刻把这个请求返回了,附带了许多的数据,客户端自行处理。2,该登陆用户一直没有新消息,这个请求超时了。
无论两种中的哪一种,客户端都立刻发起下一次请求,服务器照旧挂起,如此反复,始终维持至少一个挂起的连接,让服务器可以随时返回数据。
这种方式比循环发送请求高级一点的地方在于,服务器需要维护这个连接状态。
长轮询
为什么不是socket???