瀏覽器中打開F12,控制臺中輸入以下內容 > 回車 > 等待結果
連接關閉
表示斷網
let reconnectDelay = 1000; // 初始重連間隔
let pingInterval = null;
let socketManuallyClosed = false; // 標志是否手動關閉function createWebSocket() {if (socketManuallyClosed) return;const socket = new WebSocket("wss://echo.websocket.org");socket.onopen = function () {console.log(new Date().toLocaleString(), "WebSocket 連接成功");socket.send("Hello WebSocket!");// 發送心跳包(每 30 秒)pingInterval = setInterval(() => {if (socket.readyState === WebSocket.OPEN) {socket.send("ping");// console.log(new Date().toLocaleString(), "發送 ping");}}, 30000);// 重置重連時間reconnectDelay = 1000;};socket.onmessage = function (event) {if(event.data === 'ping') returnconsole.log(new Date().toLocaleString(), "收到消息:", event.data);};socket.onerror = function (error) {console.error(new Date().toLocaleString(), "WebSocket 錯誤:", error);socket.close(); // 觸發 onclose 進行重連};socket.onclose = function () {console.log(new Date().toLocaleString(), "WebSocket 連接關閉");clearInterval(pingInterval);if (!socketManuallyClosed) {setTimeout(() => {console.log("嘗試重新連接 WebSocket...");createWebSocket();}, reconnectDelay);// 指數退避:每次失敗后重連間隔增加,最大 60 秒reconnectDelay = Math.min(reconnectDelay * 2, 60000);}};
}// 啟動 WebSocket 連接
createWebSocket();