最开始的时候做推送很简单写一个js定时器,定时请求服务器,效果能实现,但是这样对服务器的压力的很大,下面是一个简易的js定时写法。
$(function(){ setInterval("circulateExecute();",3*1000); }) function circulateExecute() { $.ajax({ type:'post', url:'user/getList', data:{}, dataType:'json', timeout:60000, success:function(data){ var obj=data.data; var str=null; for(var i=0;i<obj.length;i++){ var data=obj[i]; str+="<tr><td>"+data.userName+"</td><td>"+data.pwd+"</td></tr>"; } $("#info").html(str); } }); }这样写很简单。
然后我又在网上搜java如何实现推送,简单一点解释推送,就是服务器主动的向客户端推送数据,例如邮箱,我们打开邮箱界面,当有新邮件的时候我们不用刷新界面,而是邮箱的服务器主动给我们推送数据,实现数据同步。
一种解决方案是dwr技术实现:这里简单讲讲我的使用感受,主要需要注意相面几点:
1/第一步导必须的jar包
<dependency> <groupId>org.directwebremoting</groupId> <artifactId>dwr</artifactId> <version>3.0.M1</version> </dependency>2/要导两个js
<script type="text/javascript" src="/javamail/js/dwr/util.js"></script> <script type="text/javascript" src="/javamail/js/dwr/engine.js"></script>
这两个js不需要下载会自动生成
<script type="text/javascript" src="/javamail/js/dwr/interface/xxx.js"></script>
上面的xxx要与dwr.xml中的配置对应
其他的这个点击打开链接博客介绍的很详细我也就不说了不过我在开发中遇到几个坑,这个jar从maven上下下来的有点问题不知道为什么然后我就自己下了个jar就好了,还有就是和spring整合我的spring是4.1.4.RELEASE然后他就报错,百度说换成3.2.8就好了,搞不懂为啥。。
我理解的dwr的原理返回一个js,然后调回调函数,感觉和jsonp有点像。。
然后就是comet4j这种技术,说这个可以先看这个博客点击打开链接,写的非常好,我下面的代码就是根据这位大牛的代码根据自己的理解进行了修改。
我写的一个比较全的demo的地址点击打开链接
然后有个坑的地方就是改server.xml里面的东西的画eclipse会自动覆盖,可以改工作空间里面的server里面的那个文件
