diff --git a/.gitignore b/.gitignore index 7564269..19c3001 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ test/ jsdoc* docs/ -.idea \ No newline at end of file +.idea + +.vscode \ No newline at end of file diff --git a/index.js b/index.js index 8dc9387..a21d4a8 100644 --- a/index.js +++ b/index.js @@ -901,9 +901,26 @@ class NodeMirai { if (this.enableWebsocket) { this.onSignal('verified', () => { const wsHost = `${this.host.replace('http', 'ws')}/all?sessionKey=${this.sessionKey}`; - (new WebSocket(wsHost)).on('message', message => { + // 拿到 ws 实例,后边还要发 ping 包 + const ws = new WebSocket(wsHost); + // 分发消息 + ws.on('message', message => { this.emitEventListener(JSON.parse(message)); - }) + }); + ws.on('open',() => { + // 建立连接后,每分钟向服务端发个 ping 包 + const interval = setInterval(() => { + ws.ping((err) => { + if (err) { + // todo sth. + } + }); + }, 60000); + ws.on('close',(code, reason) => { + // 连接关闭后,移除定时器 + clearInterval(interval); + }); + }); }); } else setInterval(async () => {