如题,实现以上功能,我知道主要有两大种思路:
轮询:轮询的原理是隔一段时间向服务器发送一个请求,这里不累述。这里主要谈一下第二种思路。
websocket进行前后端通讯:websocket是html5的新协议,基于TCP,在一次握手后,建立http连接,实现客户端与服务端全双工通信。相比较轮询机制,节约资源,不需要频繁的请求。
下面通过最精简的javaweb+mysql实例说明,只贴出关键代码。(原码放在github中,里面有本例需要的websocket-api.jar,.sql文件以及README.doc,方便理解本例)。
user.jsp:
$Title$id | name |
---|
//的到数据库信息,放在list中
Client client=new Client();
List list= client.list();
if(list != null){
for(UserBean user : list){
%>
}
}
%>
var websocket = null;
//判断当前浏览器是否支持WebSocket
if ('WebSocket' in window) {
//建立连接,这里的/websocket ,是ManagerServlet中开头注解中的那个值
websocket = new WebSocket("ws://localhost:8080/websocket");
}
else {
alert('当前浏览器 Not support websocket')
}
//连接发生错误的回调方法
websocket.onerror = function () {
setMessageInnerHTML("WebSocket连接发生错误");
};
//连接成功建立的回调方法
websocket.onopen = function () {
setMessageInnerHTML("WebSocket连接成功");
}
//接收到消息的回调方法
websocket.onmessage = function (eve