January 08, 2015

jQuery实现长轮询

由于http的request-response模式,一般来说只能由客户端发起请求,而服务器端是无法主动将消息推送到客户端的,但是聪明的工程师们还是想出来了很多办法来实现双向通信,如html5带来的websocket或者本文要讲的一种更简单的实现方法,长轮询。

我们都用过微信web版的扫描登录,如果你打开过控制台,就会发现,页面不断的向后台发起请求,如果你不扫描二维码,这个请求会在大概27秒后得到响应,然后重发一个请求,周而复始。如果你扫描了二维码,这个请求就会很快得到响应,这里就用到了长轮询。

一个典型的ajax长轮询请求一般是这样的(本文中的代码均为coffeescript)

callb......