From b23170e24fbf5fe6ead1f8408148e356e838e463 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Tue, 5 Mar 2024 09:28:50 +0800 Subject: [PATCH] fix: send ws heart packet --- src/onebot11/server/ws/ReverseWebsocket.ts | 9 +++++++-- src/onebot11/server/ws/WebsocketServer.ts | 3 ++- src/renderer/index.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/onebot11/server/ws/ReverseWebsocket.ts b/src/onebot11/server/ws/ReverseWebsocket.ts index 1f72b74..0f5da84 100644 --- a/src/onebot11/server/ws/ReverseWebsocket.ts +++ b/src/onebot11/server/ws/ReverseWebsocket.ts @@ -7,9 +7,10 @@ import {ActionName} from "../../action/types"; import {OB11Response} from "../../action/utils"; import BaseAction from "../../action/BaseAction"; import {actionMap} from "../../action"; -import {registerWsEventSender, unregisterWsEventSender} from "../postOB11Event"; +import {postWsEvent, registerWsEventSender, unregisterWsEventSender} from "../postOB11Event"; import {wsReply} from "./reply"; import {WebSocket as WebSocketClass} from "ws"; +import {OB11HeartbeatEvent} from "../../event/meta/OB11HeartbeatEvent"; export let rwsList: ReverseWebsocket[] = []; @@ -76,7 +77,7 @@ export class ReverseWebsocket { } private connect() { - const {token} = getConfigUtil().getConfig() + const {token, heartInterval} = getConfigUtil().getConfig() this.websocket = new WebSocketClass(this.url, { handshakeTimeout: 2000, perMessageDeflate: false, @@ -101,7 +102,11 @@ export class ReverseWebsocket { this.websocket.on("error", log); + const wsClientInterval = setInterval(() => { + postWsEvent(new OB11HeartbeatEvent(selfInfo.online, true, heartInterval)); + }, heartInterval); // 心跳包 this.websocket.on("close", () => { + clearInterval(wsClientInterval); log("The websocket connection: " + this.url + " closed, trying reconnecting..."); this.onclose(); }); diff --git a/src/onebot11/server/ws/WebsocketServer.ts b/src/onebot11/server/ws/WebsocketServer.ts index a002011..7d13b65 100644 --- a/src/onebot11/server/ws/WebsocketServer.ts +++ b/src/onebot11/server/ws/WebsocketServer.ts @@ -10,6 +10,7 @@ import {OB11HeartbeatEvent} from "../../event/meta/OB11HeartbeatEvent"; import {WebsocketServerBase} from "../../../common/server/websocket"; import {IncomingMessage} from "node:http"; import {wsReply} from "./reply"; +import {selfInfo} from "../../../common/data"; let heartbeatRunning = false; @@ -58,7 +59,7 @@ class OB11WebsocketServer extends WebsocketServerBase { } const {heartInterval} = getConfigUtil().getConfig(); const wsClientInterval = setInterval(() => { - postWsEvent(new OB11HeartbeatEvent(true, true, heartInterval)); + postWsEvent(new OB11HeartbeatEvent(selfInfo.online, true, heartInterval)); }, heartInterval); // 心跳包 wsClient.on("close", () => { log("event上报ws客户端已断开") diff --git a/src/renderer/index.ts b/src/renderer/index.ts index 033ebd6..e525ec9 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -74,7 +74,7 @@ async function onSettingWindowCreated(view: Element) {
`, - SettingItem('反向 WebSocket 服务心跳间隔', + SettingItem(' WebSocket 服务心跳间隔', '控制每隔多久发送一个心跳包,单位为毫秒', `
`, ),