mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
chore: 初步完成
This commit is contained in:
@@ -5,6 +5,9 @@ import { sleep } from '@/common/utils/helper';
|
|||||||
import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent';
|
import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent';
|
||||||
import { NapCatCore } from '@/core';
|
import { NapCatCore } from '@/core';
|
||||||
import { NapCatOneBot11Adapter } from '../main';
|
import { NapCatOneBot11Adapter } from '../main';
|
||||||
|
import { OB11Response } from '../action/OB11Response';
|
||||||
|
import { LogWrapper } from '@/common/utils/log';
|
||||||
|
import { ActionName } from '../action/types';
|
||||||
|
|
||||||
export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
|
export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
|
||||||
url: string;
|
url: string;
|
||||||
@@ -17,9 +20,11 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
|
|||||||
onebotContext: NapCatOneBot11Adapter;
|
onebotContext: NapCatOneBot11Adapter;
|
||||||
coreContext: NapCatCore;
|
coreContext: NapCatCore;
|
||||||
token: string;
|
token: string;
|
||||||
|
logger: LogWrapper;
|
||||||
|
|
||||||
constructor(url: string, reconnectIntervalInMillis: number, heartbeatInterval: number, token:string, coreContext: NapCatCore, onebotContext: NapCatOneBot11Adapter) {
|
constructor(url: string, reconnectIntervalInMillis: number, heartbeatInterval: number, token: string, coreContext: NapCatCore, onebotContext: NapCatOneBot11Adapter) {
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
this.logger = coreContext.context.logger;
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.heartbeatInterval = heartbeatInterval;
|
this.heartbeatInterval = heartbeatInterval;
|
||||||
this.reconnectIntervalInMillis = reconnectIntervalInMillis;
|
this.reconnectIntervalInMillis = reconnectIntervalInMillis;
|
||||||
@@ -99,16 +104,28 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
WsReply(data: any) {
|
||||||
private handleMessage(data: any) {
|
if (this.connection?.readyState === NodeWebSocket.OPEN) {
|
||||||
try {
|
this.connection?.send(JSON.stringify(data));
|
||||||
const message = JSON.parse(data);
|
|
||||||
const action = this.actionMap.get(message.actionName);
|
|
||||||
if (action) {
|
|
||||||
action.handle(message.payload);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
private async handleMessage(message: any) {
|
||||||
|
let receiveData: { action: ActionName, params?: any, echo?: any } = { action: ActionName.Unknown, params: {} };
|
||||||
|
let echo = undefined;
|
||||||
|
try {
|
||||||
|
try {
|
||||||
|
receiveData = JSON.parse(message.toString());
|
||||||
|
echo = receiveData.echo;
|
||||||
|
this.logger.logDebug('收到正向Websocket消息', receiveData);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Failed to handle message:', e);
|
this.WsReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo));
|
||||||
|
}
|
||||||
|
receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证
|
||||||
|
let retdata = await this.actionMap.get(receiveData.action)?.websocketHandle(receiveData.params, echo || "");
|
||||||
|
const packet = Object.assign({}, retdata);
|
||||||
|
this.WsReply(packet);
|
||||||
|
} catch (e) {
|
||||||
|
this.WsReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user