日期:2014-05-17  浏览次数:20656 次

基于AJAX的长轮询(long-polling)方式的方式 , 实现一个实时日志显示器(抓取linux刷屏内容,由后台往前台模拟推送)
http://www.cnblogs.com/lexus/archive/2011/11/15/2249480.html

我说一下我们这里的现状, 只用了spring ,servlet版本是 servlet2.3,页面jsp+java ,没有其他任何框架,tomcat6.0 想实现
基于AJAX的长轮询(long-polling)方式的方式 , 实现一个日志显示器  
  具体内容很简单 : 我这边一个textarea , 后台程序通过长轮询不断抓取 我后台连接的linux主机的控制台输出(连接主机以及抓取控制台日志输出这部分做好了,不用管)  
 想问下, 怎么通过长轮询方式 ;
  我感觉如果实现后台网前台的数据推送, 要得后台主动调用ajax吧?  
  看了些例子 , 很多是用php在服务器端定义js传输, 我这种软件环境, 实现该怎么写。

  我对长轮询也就是看了点解析跟代码, 不知道我这种要求用ajax合适么, 所以只要是类似的实现方式也可以,但一定是后台往前台推的  


  新手一枚 。。。 等回帖

------解决方案--------------------
Web开发模式下,恐怕你不能从传统的方式来考虑:后台主动调用浏览器,这行不通。。。

所谓长轮询,也就是浏览器发出请求后,后台始终不结束处理(比如死循环),持续不断的发送数据。

楼主可以看个例子来了解下基于HTTP长连接的“推模型”:http://blog.csdn.net/ldh911/article/details/7268879
------解决方案--------------------
http://tomcat.apache.org/tomcat-6.0-doc/aio.html#Comet_support
这是tomcat对comet的支持,
你这里需要的long polling 就是服务端抓住一个ajax请求不放,当有需要时回复
客户端每当一个ajax返回时重新发一个新的请求

然后你需要做的就是当你服务端控制台有输出时需要触发一个CometEvent