mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
feat: http heart
This commit is contained in:
parent
01ab40bf4a
commit
66cc7f8a1f
@ -28,7 +28,7 @@ json 配置内容参数解释:
|
|||||||
|
|
||||||
```json5
|
```json5
|
||||||
{
|
{
|
||||||
// 是否启用http服务,如果启用,可以通过http接口发送消息
|
// 是否启用http服务, true为启动,false为禁用,如果启用,可以通过http接口发送消息
|
||||||
"enableHttp": false,
|
"enableHttp": false,
|
||||||
// http服务端口
|
// http服务端口
|
||||||
"httpPort": 3000,
|
"httpPort": 3000,
|
||||||
@ -44,6 +44,8 @@ json 配置内容参数解释:
|
|||||||
"enableHttpPost": false,
|
"enableHttpPost": false,
|
||||||
// http上报地址, 如["http://127.0.0.1:8080/onebot/v11/http"]
|
// http上报地址, 如["http://127.0.0.1:8080/onebot/v11/http"]
|
||||||
"httpPostUrls": [],
|
"httpPostUrls": [],
|
||||||
|
// 是否启用http心跳
|
||||||
|
"enableHttpHeart": false,
|
||||||
// http上报密钥,可为空
|
// http上报密钥,可为空
|
||||||
"httpSecret": "",
|
"httpSecret": "",
|
||||||
// 消息上报格式,array为消息组,string为cq码字符串
|
// 消息上报格式,array为消息组,string为cq码字符串
|
||||||
|
@ -9,6 +9,7 @@ export interface OB11Config {
|
|||||||
wsPort: number;
|
wsPort: number;
|
||||||
wsReverseUrls: string[];
|
wsReverseUrls: string[];
|
||||||
enableHttp: boolean;
|
enableHttp: boolean;
|
||||||
|
enableHttpHeart: boolean;
|
||||||
enableHttpPost: boolean;
|
enableHttpPost: boolean;
|
||||||
enableWs: boolean;
|
enableWs: boolean;
|
||||||
enableWsReverse: boolean;
|
enableWsReverse: boolean;
|
||||||
@ -35,6 +36,7 @@ class Config implements OB11Config {
|
|||||||
wsReverseUrls: string[] = [];
|
wsReverseUrls: string[] = [];
|
||||||
enableHttp = false;
|
enableHttp = false;
|
||||||
enableHttpPost = false;
|
enableHttpPost = false;
|
||||||
|
enableHttpHeart = false;
|
||||||
enableWs = false;
|
enableWs = false;
|
||||||
enableWsReverse = false;
|
enableWsReverse = false;
|
||||||
messagePostFormat: 'array' | 'string' = 'array';
|
messagePostFormat: 'array' | 'string' = 'array';
|
||||||
|
@ -12,7 +12,7 @@ import {
|
|||||||
RawMessage
|
RawMessage
|
||||||
} from '@/core/qqnt/entities';
|
} from '@/core/qqnt/entities';
|
||||||
import { ob11Config } from '@/onebot11/config';
|
import { ob11Config } from '@/onebot11/config';
|
||||||
import { ob11HTTPServer } from '@/onebot11/server/http';
|
import { httpHeart, ob11HTTPServer } from '@/onebot11/server/http';
|
||||||
import { ob11WebsocketServer } from '@/onebot11/server/ws/WebsocketServer';
|
import { ob11WebsocketServer } from '@/onebot11/server/ws/WebsocketServer';
|
||||||
import { ob11ReverseWebsockets } from '@/onebot11/server/ws/ReverseWebsocket';
|
import { ob11ReverseWebsockets } from '@/onebot11/server/ws/ReverseWebsocket';
|
||||||
import { friendRequests, getFriend, getGroup, getGroupMember, groupNotifies, selfInfo } from '@/common/data';
|
import { friendRequests, getFriend, getGroup, getGroupMember, groupNotifies, selfInfo } from '@/common/data';
|
||||||
@ -49,6 +49,10 @@ export class NapCatOnebot11 {
|
|||||||
if (ob11Config.enableWsReverse) {
|
if (ob11Config.enableWsReverse) {
|
||||||
ob11ReverseWebsockets.start();
|
ob11ReverseWebsockets.start();
|
||||||
}
|
}
|
||||||
|
if (ob11Config.enableHttpHeart){
|
||||||
|
// 启动http心跳
|
||||||
|
httpHeart.start();
|
||||||
|
}
|
||||||
// MsgListener
|
// MsgListener
|
||||||
const msgListener = new MsgListener();
|
const msgListener = new MsgListener();
|
||||||
msgListener.onRecvSysMsg = (protobuf: number[]) => {
|
msgListener.onRecvSysMsg = (protobuf: number[]) => {
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
"wsReverseUrls": [],
|
"wsReverseUrls": [],
|
||||||
"enableHttpPost": false,
|
"enableHttpPost": false,
|
||||||
"httpPostUrls": [],
|
"httpPostUrls": [],
|
||||||
|
"enableHttpHeart": false,
|
||||||
"httpSecret": "",
|
"httpSecret": "",
|
||||||
"messagePostFormat": "array",
|
"messagePostFormat": "array",
|
||||||
"reportSelfMessage": false,
|
"reportSelfMessage": false,
|
||||||
|
@ -3,6 +3,10 @@ import { OB11Response } from '../action/OB11Response';
|
|||||||
import { HttpServerBase } from '@/common/server/http';
|
import { HttpServerBase } from '@/common/server/http';
|
||||||
import { actionHandlers, actionMap } from '../action';
|
import { actionHandlers, actionMap } from '../action';
|
||||||
import { ob11Config } from '@/onebot11/config';
|
import { ob11Config } from '@/onebot11/config';
|
||||||
|
import { selfInfo } from '@/common/data';
|
||||||
|
import { OB11HeartbeatEvent } from '@/onebot11/event/meta/OB11HeartbeatEvent';
|
||||||
|
import { postOB11Event } from '@/onebot11/server/postOB11Event';
|
||||||
|
import { napCatCore } from '@/core';
|
||||||
|
|
||||||
class OB11HTTPServer extends HttpServerBase {
|
class OB11HTTPServer extends HttpServerBase {
|
||||||
name = 'OneBot V11 server';
|
name = 'OneBot V11 server';
|
||||||
@ -29,3 +33,26 @@ setTimeout(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
|
|
||||||
|
class HTTPHeart{
|
||||||
|
intervalId: NodeJS.Timeout | null = null;
|
||||||
|
start(){
|
||||||
|
const { heartInterval, } = ob11Config;
|
||||||
|
if (this.intervalId) {
|
||||||
|
clearInterval(this.intervalId);
|
||||||
|
}
|
||||||
|
this.intervalId = setInterval(() => {
|
||||||
|
// ws的心跳是ws自己维护的
|
||||||
|
postOB11Event(new OB11HeartbeatEvent(!!selfInfo.online, true, heartInterval), false, false);
|
||||||
|
}, heartInterval);
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(){
|
||||||
|
if (this.intervalId){
|
||||||
|
clearInterval(this.intervalId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const httpHeart = new HTTPHeart();
|
||||||
|
@ -69,7 +69,7 @@ export function postWsEvent(event: PostEventType) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function postOB11Event(msg: PostEventType, reportSelf = false) {
|
export function postOB11Event(msg: PostEventType, reportSelf = false, postWs= true) {
|
||||||
const config = ob11Config;
|
const config = ob11Config;
|
||||||
// 判断msg是否是event
|
// 判断msg是否是event
|
||||||
if (!config.reportSelfMessage && !reportSelf) {
|
if (!config.reportSelfMessage && !reportSelf) {
|
||||||
@ -181,5 +181,7 @@ export function postOB11Event(msg: PostEventType, reportSelf = false) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (postWs){
|
||||||
postWsEvent(msg);
|
postWsEvent(msg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user