有关客户端实时接收服务端发来的消息方法有很多.
本文用一种html5新增的方法和servlet一起来实现..
关于 eventSource具体的用法就不在这里赘述了.
大家可以百度一下 看一下实现方法.
核心思想就是在web.xml 中新增一个监听
然后监听新增一个线程安全的list .
如果服务端有数据更新,包含新增,更新,删除都需要更新消息列表
然后通过轮训的机制发给前台注册了相应服务的页面.
页面获取数据以后展现到前台..
实现原理就是
jsp:
var eventSource = new EventSource("getMessageServlet");
eventSource.addEventListener('10010', function(event) {
document.getElementById('result').innerHTML = event.data;
}, false);
主要添加了 eventSource 对象 从getMessageServlet servlet获取服务器的数据..
然后注册了当前用户ID的监听.
java:
在servlet里面实现了对于消息列表的推送..
for(MessageReminder mr:tempList){
writer.write("event:"+mr.getUserId()+"\n");
JSONObject jsonO=JSONObject.fromObject(mr);
writer.write("data: " + jsonO.toString()+ "\n\n");
writer.flush();
try {
Thread.sleep(30);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
writer.close();
当前还要实现具体操作消息列表的方法