Эх сурвалжийг харах

!2 VTMModifyHeader's ws connection add timeout regular

chenliangyu 8 сар өмнө
parent
commit
def75df52b

+ 34 - 24
addin/res/VTMModifyHeaders/background.js

@@ -25,30 +25,40 @@ addListener();
 chrome.runtime.onMessage.addListener(notify);
 
 function connectWebSocket(callback_function) {
-  socket = new WebSocket(wsUrl);
-
-  socket.onmessage = function(event) {
-    log('Received message:' + event.data);
-    socket.close();
-    callback_function(event.data);
-    return;
-  };
-
-  socket.onopen = function() {
-    log('WebSocket connection established');
-    // 发送配置请求
-    let requestData = '{"messageType":131073}';
-    log('Send message:' + requestData)
-    socket.send(requestData);
-  };
-
-  socket.onerror = function() {
-    log('WebSocket connection error');
-  };
-
-  socket.onclose = function() {
-    log('WebSocket connection closed');
-  };
+    let socket = new WebSocket(wsUrl);
+    let timeoutId; // 用于存储定时器 ID
+
+    socket.onmessage = function (event) {
+        log('Received message:' + event.data);
+        clearTimeout(timeoutId); // 清除定时器
+        socket.close();
+        callback_function(event.data);
+        return;
+    };
+
+    socket.onopen = function () {
+        log('WebSocket connection established');
+        // 发送配置请求
+        let requestData = '{"messageType":131073}';
+        log('Send message:' + requestData);
+        socket.send(requestData);
+
+        // 设置定时器,5秒后关闭连接
+        timeoutId = setTimeout(() => {
+            log('WebSocket connection timed out');
+            socket.close();
+        }, 5000); // 5秒 = 5000 毫秒
+    };
+
+    socket.onerror = function () {
+        log('WebSocket connection error');
+        clearTimeout(timeoutId); // 清除定时器
+    };
+
+    socket.onclose = function () {
+        log('WebSocket connection closed');
+        clearTimeout(timeoutId); // 清除定时器
+    };
 }