有个功能叫长轮询,很多时候用于要求不特别高的 web 消息推送或者 webim 聊天。基本原理是客户端向服务器发起一次请求后,该请求就被服务器 hold 住 n 秒(从 30-90s 不等),此时如果服务器发现有属于这个连接的新消息,就返回消息,然后本次请求结束,客户端再次发起下一次请求,无限循环。
这里面有两个难点:
请求是顺序的,一个请求结束后才发起另外一个,也就是说是链式请求,而大部分的客户端异步请求是不会等待一个完结才开始另外一个的。
请求的数目是无限的,不是有限的。类似 Porimse 这样的链式请求的实现从方式上看其实是先把有限个请求任务全部串起来,然后再让它们执行。而我这里,请求数目理论上是无限的,所以不能预先串好
有个叫 sockjs 的库在低版本 IE 上就能实现这样“无限链式请求”功能,我看了很久代码,还是没搞懂原理,请指点
这里面有两个难点:
请求是顺序的,一个请求结束后才发起另外一个,也就是说是链式请求,而大部分的客户端异步请求是不会等待一个完结才开始另外一个的。
请求的数目是无限的,不是有限的。类似 Porimse 这样的链式请求的实现从方式上看其实是先把有限个请求任务全部串起来,然后再让它们执行。而我这里,请求数目理论上是无限的,所以不能预先串好
有个叫 sockjs 的库在低版本 IE 上就能实现这样“无限链式请求”功能,我看了很久代码,还是没搞懂原理,请指点
