基于AJAX的长轮询(long-polling)方式的方式 , 实现一个实时日志显示器(抓取linux刷屏内容,由后台往前台模拟推送)

holc900 2012-10-17 09:06:11
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合适么, 所以只要是类似的实现方式也可以,但一定是后台往前台推的


新手一枚 。。。 等回帖
...全文
1776 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
holc900 2012-10-19
  • 打赏
  • 举报
回复
结贴了- -
holc900 2012-10-18
  • 打赏
  • 举报
回复
1.目前我进行到了这一步 : 我会抓住一个ajax一直去抓日志, 每次也可以抓到 , 但是, 抓到的数据是在javabean里面,因为我们这用的jsp+java(请求发送给处理页面而非servlet类,比较原始) 没有其他框架, 所以得到的字符串在方法内部无法out.print()出来给页面, 这种情况可以借助什么把数据传出来
2.现在实现不出来效果, 所以我不知道我的ajax请求发送的时机对不对, 我只在页面load的时候发送过一次, 这样可以获取每次循环的值么
hellobbboy 2012-10-17
  • 打赏
  • 举报
回复
个人觉得要是实时性要求不高,前台就隔段时间就去访问下后台好了。
后台往前台推,你就起个socket链接好了。
MiceRice 2012-10-17
  • 打赏
  • 举报
回复
Web应用下,连接建立只能靠Client发起,连接建立完毕后,服务器可自由的进行数据发送。


然后,反过来想你这个问题吧,如果都没有任何Client连接(请求)到服务器,也就意味着管理员们根本没人关注服务监控页面;你Linux控制台就算有日志也没人看啊?那还推它个毛线啊?
holc900 2012-10-17
  • 打赏
  • 举报
回复
恩嗯 我现在也是这样想的 所以抓取方法里是一个死循环 这个正在试
不过目前有一点疑惑 , 看楼上的http推模型, 个人感觉, 楼上的方法还是通过页面输入主动触发循环, 我想寻求的是 当linux控制台刷出日志时触发推送事件 , 那个方法好使么这样的话
MiceRice 2012-10-17
  • 打赏
  • 举报
回复
Web开发模式下,恐怕你不能从传统的方式来考虑:后台主动调用浏览器,这行不通。。。

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

楼主可以看个例子来了解下基于HTTP长连接的“推模型”:http://blog.csdn.net/ldh911/article/details/7268879
ldq67123 2012-10-17
  • 打赏
  • 举报
回复
看你的需求,使用websocket会更方便,要求管理员使用支持html5的浏览器并不过分,做界面还不用考虑兼容性
yktd26 2012-10-17
  • 打赏
  • 举报
回复
http://tomcat.apache.org/tomcat-6.0-doc/aio.html#Comet_support
这是tomcat对comet的支持,
你这里需要的long polling 就是服务端抓住一个ajax请求不放,当有需要时回复
客户端每当一个ajax返回时重新发一个新的请求

然后你需要做的就是当你服务端控制台有输出时需要触发一个CometEvent
MiceRice 2012-10-17
  • 打赏
  • 举报
回复
Web应用,你准备怎么让浏览器发起Socket连接?用Flash或自定义ActiveX控件?复杂度太高了吧?
holc900 2012-10-17
  • 打赏
  • 举报
回复
如果按楼上起socket的做法大概怎么弄, socket我还没做过 , 应该从程序起一个socket长链接么

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧