dwr2.0反转ajax在IE中不能实时刷新问题

服务端使用jetty
dwr2.0.3
web.xml配置为:
  1.  <servlet>
  2.   <servlet-name>dwr-invoker</servlet-name>
  3.   <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  4.   <init-param>
  5.    <param-name>activeReverseAjaxEnabled</param-name>
  6.    <param-value>true</param-value>
  7.   </init-param>
  8.   <init-param>
  9.    <param-name>initApplicationScopeCreatorsAtStartup</param-name>
  10.    <param-value>true</param-value>
  11.   </init-param>
  12.   <load-on-startup>1</load-on-startup>
  13.  </servlet>
在firefox中,推送能正常进行,实时刷新数据,但是在IE和opera中不能实时刷新,大约隔一分钟才刷新一次。查阅dwr文档解释如下:
The problem with full streaming is that it requires HTTP chunked mode which sometimes fails with network proxies, mod_jk, and other network scanners. If you try full streaming and find that messages are only getting through every 60 seconds, this could be why. DWR version 2.0.3 and before used this as the default. From version 2.0.4 the default is to use Early Closing Mode.
意思是在2.0.3版本中缺省使用的full streaming模式需要HTTP块模式,而在网络代理,mod_jk,其他网络扫描器等情况下,会导致推送失败,每隔60秒才刷一次。而从2.0.4版本开始缺省使用Early Closing mode,避免了这一问题。

在2.0.3中要使用Early Closing mode,需要在配置中加入如下代码:
  1. <init-param>
  2.   <param-name>maxWaitAfterWrite</param-name>
  3.   <param-value>500</param-value>
  4. </init-param>
在这一模式下,如果没有数据推送,长连接只保持60秒,但是如果有数据,长连接将在第一次数据推送后继续保持长连接500秒。
通过以上修改,IE和opera都能正确推送,实时刷新。问题解决
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值