spring websocket自动断开连接再创建引发的问题解决方案

问题:由于 web session 超时时间为 30 分钟,如用户在 web session 规定时间内没有退出系统,但由于其它原因 用户却断开的 websocket 的连接,如果用户还要聊天或是其它 websocket 方面的操作,那么就只能重新连接...

看代码:

var socket;
var $ = function() {
    return document.getElementById(arguments[0]);
}
var log = function(msg) {
    $("log").innerHTML ? $("log").innerHTML += "<br />" + msg : $("log").innerHTML = msg;
}
var initWebSocket = function() {
    if (window.WebSocket) {
        socket = new WebSocket("ws://127.0.0.1:8080/websocket");
        socket.onmessage = function(event) {
            var json = JSON.parse(event.data);
            document.getElementById("message").value = json.message;
        };
        socket.onopen = function(event) {
            log("Web Socket opened!");
        };
        socket.onclose = function(event) {
            log("Web Socket closed.");
        };
        socket.onerror = function(event) {
            log("Web Socket error.");
        };
    } else {
        log("Your browser does not support Web Socket.");
    }
}
var send = function() {
    var data = function() {
        socket.send("{'send':1,'take':2,'message':" + Math.random() + "}");
    };
    if (socket.readyState !== 1) {
        socket.close();
        initWebSocket();
        setTimeout(function() {
            data();
        }, 250);
    } else {
        data();
    };
 
}
window.onload = function() {
    initWebSocket();
}

 

posted @ 2015-09-22 12:23  锐洋智能  阅读(17561)  评论(2编辑  收藏  举报