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();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM