论坛首页 Web前端技术论坛

AJAX 反推技术的一点疑问

浏览 16801 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-08   最后修改:2011-09-08
    我们用DWR来实现页面的反推,他的思想很简单,将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。但是我不知道它最底层是如何实现的,web应用一定都是客户端发起请求,服务器端响应请求,返回给客户端,就算AJAX用了XMLHttprequest可以实现异步通讯,但也依然是符合这个的,我认为AJAX的革命性在于把传统的document的交互变成的真正意义上Data的交互,但依然是要符合客户端发起请求,服务器端响应请求,返回给客户端这个前提。
    但是这个反推技术,貌似打破了这个规律,我就想不明白了,有人知道其原理吗?
    如果说其实它的底层还是没有脱离这个规律,还是要由客户端定时的去刷服务器,只是很小的一个数据标志,那我也能理解,基于这个也是可以实现很多效果,但是好像又总觉得不应该会是这样的一个东西。
    有朋友对这个有了解的吗?一起交流交流.
   发表时间:2011-09-08   最后修改:2011-09-08
ajax反推技术并非真正意义上的服务器推,只是一个模拟。主要是基于HTTP长连接
相关介绍:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
0 请登录后投票
   发表时间:2011-09-08  
两种方法

长连接 和轮询

有WebSocket就爽了啊!嘎嘎
0 请登录后投票
   发表时间:2011-09-08   最后修改:2011-09-08
axiheyhey 写道
ajax反推技术并非真正意义上的服务器推,只是一个模拟。主要是基于HTTP长连接
相关介绍:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/


长连接看了这个,有点了解了,轮询可否再指点一下?
0 请登录后投票
   发表时间:2011-09-08  
ajax伪长链接,即一个ajax请求发起,到服务器端之后,服务器端不会立刻进行数据查询,而是将这个请求作为一个“通道”保持下来
当服务器需要“推”的时候,就会找到这个通道,将数据放进去,关掉通道,客户端就有了“推”的现象(达到了实时性和服务器主动性)
而客户端需要做的,就是在这个“通道”被关闭后,立即再打开一个通道,即再发一个ajax请求给服务器
1 请登录后投票
   发表时间:2011-09-10  
所以用firebug看的时候,会发现一个又一个的请求在不断地发出,关闭,发出,关闭
0 请登录后投票
   发表时间:2011-09-10  
white_crucifix 写道
所以用firebug看的时候,会发现一个又一个的请求在不断地发出,关闭,发出,关闭


+1

可以看到后台不推送消息的时候,一个连接一直在请求.

当后台推送消息时候,这个连接结束,处理推送消息,然后再次请求.

动作循环.
0 请登录后投票
   发表时间:2011-09-10  
脱离请求-发送机制,直接将服务器上的数据推送给客户端,是不符合HTTP理论的。
我估计就是一个HTTP长连接。
0 请登录后投票
   发表时间:2011-09-10  
轮询形式是通过 AJAX 每隔一定时间调用请求,查看服务器中是否有新消息接收,如果有则在回调函数中显示。
0 请登录后投票
   发表时间:2011-09-11  
shi007 写道
轮询形式是通过 AJAX 每隔一定时间调用请求,查看服务器中是否有新消息接收,如果有则在回调函数中显示。


那轮询的意思,实际上就是由客户端定时发请求呀。比如每隔5秒去服务器请求,这样不是服务器压力很大,还会有延迟?
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics