websocket小案例
开发环境 jdk8+tomcat8
遇到的大坑:
@ServerEndpoint 对bean的不支持(如果报初始化bean对象一直为空指针)
修改为@ServerEndpoint(value = “/websocket”, configurator = SpringConfigurator.class)
客户端:sendxxx()…发送请求到服务端
前段:
(1)ws.js
var websocket = null;
//判断当前浏览器是否支持WebSocket
if ('WebSocket' in window) {
websocket = new WebSocket("ws://localhost:8080/bill_compare/websocket");
}
else {
alert('当前浏览器不支持 websocket消息通知')
}
//连接发生错误的回调方法
websocket.onerror = f
unction () {
console.log("WebSocket连接发生错误");
};
//连接成功建立的回调方法
websocket.onopen = function () {
console.log("ws建立连接成功");
}
//接收到消息的回调方法
websocket.onmessage = function (evt) {
/*setMessageInnerHTML(event.data);*/
alert("ws接收返回消息:"+evt.data);
console.log("服务器返回消息: " + evt.data);
}
//连接关闭的回调方法
websocket.onclose = function () {
console.log("ws连接关闭");
}
//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
window.onbeforeunload = function () {
closeWebSocket();
}
//将消息显示在网页上
/* function setMessageInnerHTML(innerHTML) {
document.getElementById('message').innerHTML += innerHTML + '<br/>';
var data = document.getElementById('message');
alert(data);
}*/
//关闭WebSocket连接
function closeWebSocket() {
websocket.close();
}
//东本订单上传 发送消息
function sendOrderBill() {
var message = "东本订单";
console.log("ws发送消息:"+message);
websocket.send(message);
}
//扫描记录单 发送消息
function sendScanBill(){
var message = "扫描记录单上传";
console.log("ws发送消息:"+message);
websocket.send(message);
}
/* 获取sessionID
function getSessionId(){
var c_name = 'JSESSIONID';
if(document.cookie.length>0){
c_start=document.cookie.indexOf(c_name + "=")
if(c_start!=-1){
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if(c_end==-1) c_end=document.cookie.length
var sessionId=unescape(document.cookie.substring(c_start,c_end));
alert(sessionId);
return sessionId;
}
}
} */
(2) sockjs.min.js(3)stomp.min.js
这两个js文件需要自己下载 百度搜一下
我是将这几个必要的文件放在common.jsp中(公共调用)