日期:2014-05-16  浏览次数:20685 次

ajax的长轮询很难吗?网上找了几个小时,都是抄袭的文章。 - Web 开发 / Ajax
http://www.ttkoo.com/a/houtai/php/2010/1109/904.html

这个实在看不明白,,为什么在火狐控制台下可以看到在等待???另外那个timestamp参数如果去一个定值很大的数比如999999999999999,之类,也会等待。。取小数111,则无限刷新????

我的理解是调用了connect() 运行$.ajax后,执行complete操作,,再次运行connect,,貌似是一个循环,,但是他怎么会等待呢??
为什么不是这种
http://...........php?timestamp=99999999
http://...........php?timestamp=99999999
http://...........php?timestamp=99999999
http://...........php?timestamp=99999999
http://...........php?timestamp=99999999
........
形式???
而是
http://...........php?timestamp=99999999 一直在这里等待呢??
我很费解???


------解决方案--------------------
自己写一个 不就好了
当前台发出AJAX请求后
你控制后台不要直接返回(有可用的东西了才返回,或者就是卡到一定时候才返回)

这个时候前台发出的AJAX请求有2种后续情况
1)顺利等到服务器端返回信息 然后处理
2)等待超时(后台一直没有返回)

以上2种情况 之后 你要做的就是 继续发出AJAX请求

------解决方案--------------------
楼主你想的这种叫简单轮询,长轮询是需要服务器端响应后前台才会继续发送请求,避免了简单轮询的性能浪费
------解决方案--------------------
这个例子我前两天试过,能工作

楼主不关心什么轮询的想法是极其错误的,这个例子确实是长轮询

每次请求,当服务器收到新文本时才会返回,于是客户端更新内容

接着,马上建立一个新连接,接着等待, 最终实现的效果就是做为聊天室,每个用户的谈话,各个用户都能在最快时间内收到, 这比简单轮询敏感得多