mirror of
https://github.com/yaklang/yaklang-chrome-extension.git
synced 2026-09-22 03:10:43 +08:00
fix: 修复重连问题
This commit is contained in:
@@ -13,7 +13,7 @@ chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
|
|||||||
console.info("Start to connect websocket")
|
console.info("Start to connect websocket")
|
||||||
const host = msg['host'] || "127.0.0.1"
|
const host = msg['host'] || "127.0.0.1"
|
||||||
const port = msg['port'] || 11212
|
const port = msg['port'] || 11212
|
||||||
websocketManager.connectWebsocket(`ws://${host}:${port}/?token=${"a"}`)
|
websocketManager.connectWebsocket(`ws://${host}:${port}/?token=${"a"}`, port)
|
||||||
break;
|
break;
|
||||||
case ActionType.DISCONNECT:
|
case ActionType.DISCONNECT:
|
||||||
websocketManager.disconnectWebsocket();
|
websocketManager.disconnectWebsocket();
|
||||||
|
|||||||
+3
-3
@@ -13,12 +13,12 @@ export class WebSocketManager {
|
|||||||
this.intervalId = null;
|
this.intervalId = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
connectWebsocket(url) {
|
connectWebsocket(url, port) {
|
||||||
this.disconnectWebsocket();
|
this.disconnectWebsocket();
|
||||||
this.socket = new WebSocket(url);
|
this.socket = new WebSocket(url);
|
||||||
|
|
||||||
this.socket.onopen = () => {
|
this.socket.onopen = () => {
|
||||||
chrome.runtime.sendMessage({action: ActionType.STATUS, connected: true});
|
chrome.runtime.sendMessage({action: ActionType.STATUS, connected: true, port: port});
|
||||||
this.startHeartbeat();
|
this.startHeartbeat();
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ export class WebSocketManager {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.socket.onclose = () => {
|
this.socket.onclose = () => {
|
||||||
chrome.runtime.sendMessage({action: ActionType.STATUS, connected: false});
|
chrome.runtime.sendMessage({action: ActionType.STATUS, connected: false, port: port});
|
||||||
};
|
};
|
||||||
|
|
||||||
this.socket.onerror = (error) => {
|
this.socket.onerror = (error) => {
|
||||||
|
|||||||
+30
-16
@@ -10,7 +10,7 @@ import {
|
|||||||
} from "@assets/icon/icon";
|
} from "@assets/icon/icon";
|
||||||
import { wsc } from "@network/chrome";
|
import { wsc } from "@network/chrome";
|
||||||
import "./Contro.css";
|
import "./Contro.css";
|
||||||
import {ActionType} from "../../public/connect";
|
import { ActionType } from "../../public/connect";
|
||||||
|
|
||||||
interface ControProps {}
|
interface ControProps {}
|
||||||
export const Contro: React.FC<ControProps> = () => {
|
export const Contro: React.FC<ControProps> = () => {
|
||||||
@@ -21,8 +21,35 @@ export const Contro: React.FC<ControProps> = () => {
|
|||||||
const [enginePortTemp, setEnginePortTemp] = useState<string>(enginePort);
|
const [enginePortTemp, setEnginePortTemp] = useState<string>(enginePort);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
findPort(11212, 11222);
|
const yakitConnectInfo = localStorage.getItem("yakit-connect");
|
||||||
|
if (!yakitConnectInfo) {
|
||||||
|
findPort(11212, 11222);
|
||||||
|
} else {
|
||||||
|
const { port, connected } = JSON.parse(yakitConnectInfo);
|
||||||
|
setConnected(connected);
|
||||||
|
setEnginePort(port + "");
|
||||||
|
setAutoFindFailedReason("");
|
||||||
|
}
|
||||||
|
|
||||||
|
wsc.onWSCMessage((message) => {
|
||||||
|
if (message.action === ActionType.STATUS) {
|
||||||
|
setConnected(message.connected);
|
||||||
|
if (message.connected === false) {
|
||||||
|
localStorage.setItem("yakit-connect", "");
|
||||||
|
setAutoFindFailedReason(
|
||||||
|
"Yakit WebSocket Controller Port is not right"
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
localStorage.setItem(
|
||||||
|
"yakit-connect",
|
||||||
|
JSON.stringify({ connected: true, port: message.port })
|
||||||
|
);
|
||||||
|
setAutoFindFailedReason("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const findPort = (port: number, max: number) => {
|
const findPort = (port: number, max: number) => {
|
||||||
const ws = new WebSocket(`ws://127.0.0.1:${port}`);
|
const ws = new WebSocket(`ws://127.0.0.1:${port}`);
|
||||||
ws.onclose = (e: CloseEvent) => {
|
ws.onclose = (e: CloseEvent) => {
|
||||||
@@ -34,6 +61,7 @@ export const Contro: React.FC<ControProps> = () => {
|
|||||||
setConnected(false);
|
setConnected(false);
|
||||||
setEnginePort("");
|
setEnginePort("");
|
||||||
setAutoFindFailedReason("Cannot found Yakit");
|
setAutoFindFailedReason("Cannot found Yakit");
|
||||||
|
localStorage.setItem("yakit-connect", "");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ws.onopen = () => {
|
ws.onopen = () => {
|
||||||
@@ -47,20 +75,6 @@ export const Contro: React.FC<ControProps> = () => {
|
|||||||
|
|
||||||
const connectPort = (port: number) => {
|
const connectPort = (port: number) => {
|
||||||
wsc.connect(port);
|
wsc.connect(port);
|
||||||
wsc.onWSCMessage((message) => {
|
|
||||||
if (message.action === ActionType.STATUS) {
|
|
||||||
console.log("onWSCMessage", message)
|
|
||||||
if (message.connected === undefined) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setConnected(message.connected);
|
|
||||||
if (message.connected === false) {
|
|
||||||
setAutoFindFailedReason("Yakit WebSocket Controller Port is not right");
|
|
||||||
} else {
|
|
||||||
setAutoFindFailedReason("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const safeConnected = useMemo(() => {
|
const safeConnected = useMemo(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user