mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
fix #727
This commit is contained in:
@@ -16,12 +16,12 @@ import {
|
|||||||
} from '@/core';
|
} from '@/core';
|
||||||
import { OB11ConfigLoader } from '@/onebot/config';
|
import { OB11ConfigLoader } from '@/onebot/config';
|
||||||
import {
|
import {
|
||||||
OB11ActiveHttpAdapter,
|
OB11HttpClientAdapter,
|
||||||
OB11ActiveWebSocketAdapter,
|
OB11WebSocketClientAdapter,
|
||||||
OB11NetworkManager,
|
OB11NetworkManager,
|
||||||
OB11NetworkReloadType,
|
OB11NetworkReloadType,
|
||||||
OB11PassiveHttpAdapter,
|
OB11HttpServerAdapter,
|
||||||
OB11PassiveWebSocketAdapter,
|
OB11WebSocketServerAdapter,
|
||||||
} from '@/onebot/network';
|
} from '@/onebot/network';
|
||||||
import { NapCatPathWrapper } from '@/common/path';
|
import { NapCatPathWrapper } from '@/common/path';
|
||||||
import {
|
import {
|
||||||
@@ -51,7 +51,7 @@ import {
|
|||||||
import { OB11Message } from './types';
|
import { OB11Message } from './types';
|
||||||
import { OB11PluginAdapter } from './network/plugin';
|
import { OB11PluginAdapter } from './network/plugin';
|
||||||
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
||||||
import { OB11ActiveHttpSSEAdapter } from './network/active-http-sse';
|
import { OB11HttpSSEServerAdapter } from './network/http-server-sse';
|
||||||
|
|
||||||
//OneBot实现类
|
//OneBot实现类
|
||||||
export class NapCatOneBot11Adapter {
|
export class NapCatOneBot11Adapter {
|
||||||
@@ -123,28 +123,28 @@ export class NapCatOneBot11Adapter {
|
|||||||
for (const key of ob11Config.network.httpServers) {
|
for (const key of ob11Config.network.httpServers) {
|
||||||
if (key.enable) {
|
if (key.enable) {
|
||||||
this.networkManager.registerAdapter(
|
this.networkManager.registerAdapter(
|
||||||
new OB11PassiveHttpAdapter(key.name, key, this.core, this, this.actions)
|
new OB11HttpServerAdapter(key.name, key, this.core, this, this.actions)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const key of ob11Config.network.httpSseServers) {
|
for (const key of ob11Config.network.httpSseServers) {
|
||||||
if (key.enable) {
|
if (key.enable) {
|
||||||
this.networkManager.registerAdapter(
|
this.networkManager.registerAdapter(
|
||||||
new OB11ActiveHttpSSEAdapter(key.name, key, this.core, this, this.actions)
|
new OB11HttpSSEServerAdapter(key.name, key, this.core, this, this.actions)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const key of ob11Config.network.httpClients) {
|
for (const key of ob11Config.network.httpClients) {
|
||||||
if (key.enable) {
|
if (key.enable) {
|
||||||
this.networkManager.registerAdapter(
|
this.networkManager.registerAdapter(
|
||||||
new OB11ActiveHttpAdapter(key.name, key, this.core, this, this.actions)
|
new OB11HttpClientAdapter(key.name, key, this.core, this, this.actions)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const key of ob11Config.network.websocketServers) {
|
for (const key of ob11Config.network.websocketServers) {
|
||||||
if (key.enable) {
|
if (key.enable) {
|
||||||
this.networkManager.registerAdapter(
|
this.networkManager.registerAdapter(
|
||||||
new OB11PassiveWebSocketAdapter(
|
new OB11WebSocketServerAdapter(
|
||||||
key.name,
|
key.name,
|
||||||
key,
|
key,
|
||||||
this.core,
|
this.core,
|
||||||
@@ -157,7 +157,7 @@ export class NapCatOneBot11Adapter {
|
|||||||
for (const key of ob11Config.network.websocketClients) {
|
for (const key of ob11Config.network.websocketClients) {
|
||||||
if (key.enable) {
|
if (key.enable) {
|
||||||
this.networkManager.registerAdapter(
|
this.networkManager.registerAdapter(
|
||||||
new OB11ActiveWebSocketAdapter(
|
new OB11WebSocketClientAdapter(
|
||||||
key.name,
|
key.name,
|
||||||
key,
|
key,
|
||||||
this.core,
|
this.core,
|
||||||
@@ -206,11 +206,11 @@ export class NapCatOneBot11Adapter {
|
|||||||
this.context.logger.log(`[Notice] [OneBot11] 配置变更前:\n${prevLog}`);
|
this.context.logger.log(`[Notice] [OneBot11] 配置变更前:\n${prevLog}`);
|
||||||
this.context.logger.log(`[Notice] [OneBot11] 配置变更后:\n${newLog}`);
|
this.context.logger.log(`[Notice] [OneBot11] 配置变更后:\n${newLog}`);
|
||||||
|
|
||||||
await this.handleConfigChange(prev.network.httpServers, now.network.httpServers, OB11PassiveHttpAdapter);
|
await this.handleConfigChange(prev.network.httpServers, now.network.httpServers, OB11HttpServerAdapter);
|
||||||
await this.handleConfigChange(prev.network.httpClients, now.network.httpClients, OB11ActiveHttpAdapter);
|
await this.handleConfigChange(prev.network.httpClients, now.network.httpClients, OB11HttpClientAdapter);
|
||||||
await this.handleConfigChange(prev.network.httpSseServers, now.network.httpSseServers, OB11ActiveHttpSSEAdapter);
|
await this.handleConfigChange(prev.network.httpSseServers, now.network.httpSseServers, OB11HttpSSEServerAdapter);
|
||||||
await this.handleConfigChange(prev.network.websocketServers, now.network.websocketServers, OB11PassiveWebSocketAdapter);
|
await this.handleConfigChange(prev.network.websocketServers, now.network.websocketServers, OB11WebSocketServerAdapter);
|
||||||
await this.handleConfigChange(prev.network.websocketClients, now.network.websocketClients, OB11ActiveWebSocketAdapter);
|
await this.handleConfigChange(prev.network.websocketClients, now.network.websocketClients, OB11WebSocketClientAdapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async handleConfigChange<CT extends NetworkAdapterConfig>(
|
private async handleConfigChange<CT extends NetworkAdapterConfig>(
|
||||||
|
@@ -8,7 +8,7 @@ import { HttpClientConfig } from '@/onebot/config/config';
|
|||||||
import { ActionMap } from '@/onebot/action';
|
import { ActionMap } from '@/onebot/action';
|
||||||
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
||||||
|
|
||||||
export class OB11ActiveHttpAdapter extends IOB11NetworkAdapter<HttpClientConfig> {
|
export class OB11HttpClientAdapter extends IOB11NetworkAdapter<HttpClientConfig> {
|
||||||
constructor(
|
constructor(
|
||||||
name: string, config: HttpClientConfig, core: NapCatCore, obContext: NapCatOneBot11Adapter, actions: ActionMap
|
name: string, config: HttpClientConfig, core: NapCatCore, obContext: NapCatOneBot11Adapter, actions: ActionMap
|
||||||
) {
|
) {
|
@@ -1,9 +1,9 @@
|
|||||||
import { OB11EmitEventContent } from './index';
|
import { OB11EmitEventContent } from './index';
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
import { OB11Response } from '@/onebot/action/OneBotAction';
|
import { OB11Response } from '@/onebot/action/OneBotAction';
|
||||||
import { OB11PassiveHttpAdapter } from './passive-http';
|
import { OB11HttpServerAdapter } from './http-server';
|
||||||
|
|
||||||
export class OB11ActiveHttpSSEAdapter extends OB11PassiveHttpAdapter {
|
export class OB11HttpSSEServerAdapter extends OB11HttpServerAdapter {
|
||||||
private sseClients: Response[] = [];
|
private sseClients: Response[] = [];
|
||||||
|
|
||||||
async handleRequest(req: Request, res: Response): Promise<any> {
|
async handleRequest(req: Request, res: Response): Promise<any> {
|
@@ -9,7 +9,7 @@ import { HttpServerConfig } from '@/onebot/config/config';
|
|||||||
import { NapCatOneBot11Adapter } from "@/onebot";
|
import { NapCatOneBot11Adapter } from "@/onebot";
|
||||||
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
||||||
|
|
||||||
export class OB11PassiveHttpAdapter extends IOB11NetworkAdapter<HttpServerConfig> {
|
export class OB11HttpServerAdapter extends IOB11NetworkAdapter<HttpServerConfig> {
|
||||||
private app: Express | undefined;
|
private app: Express | undefined;
|
||||||
private server: http.Server | undefined;
|
private server: http.Server | undefined;
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ export class OB11PassiveHttpAdapter extends IOB11NetworkAdapter<HttpServerConfig
|
|||||||
const action = this.actions.get(actionName as any);
|
const action = this.actions.get(actionName as any);
|
||||||
if (action) {
|
if (action) {
|
||||||
try {
|
try {
|
||||||
const result = await action.handle(payload, this.name);
|
const result = await action.handle(payload, this.name, this.config);
|
||||||
return res.json(result);
|
return res.json(result);
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
return res.json(OB11Response.error(error?.stack?.toString() || error?.message || 'Error Handle', 200));
|
return res.json(OB11Response.error(error?.stack?.toString() || error?.message || 'Error Handle', 200));
|
@@ -101,7 +101,7 @@ export class OB11NetworkManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export * from './active-http';
|
export * from './http-client';
|
||||||
export * from './active-websocket';
|
export * from './websocket-client';
|
||||||
export * from './passive-http';
|
export * from './http-server';
|
||||||
export * from './passive-websocket';
|
export * from './websocket-server';
|
||||||
|
@@ -10,7 +10,7 @@ import { WebsocketClientConfig } from '@/onebot/config/config';
|
|||||||
import { NapCatOneBot11Adapter } from "@/onebot";
|
import { NapCatOneBot11Adapter } from "@/onebot";
|
||||||
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
||||||
|
|
||||||
export class OB11ActiveWebSocketAdapter extends IOB11NetworkAdapter<WebsocketClientConfig> {
|
export class OB11WebSocketClientAdapter extends IOB11NetworkAdapter<WebsocketClientConfig> {
|
||||||
private connection: WebSocket | null = null;
|
private connection: WebSocket | null = null;
|
||||||
private heartbeatRef: NodeJS.Timeout | null = null;
|
private heartbeatRef: NodeJS.Timeout | null = null;
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ export class OB11ActiveWebSocketAdapter extends IOB11NetworkAdapter<WebsocketCli
|
|||||||
this.checkStateAndReply<any>(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo));
|
this.checkStateAndReply<any>(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name);
|
const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name, this.config);
|
||||||
this.checkStateAndReply<any>({ ...retdata });
|
this.checkStateAndReply<any>({ ...retdata });
|
||||||
}
|
}
|
||||||
async reload(newConfig: WebsocketClientConfig) {
|
async reload(newConfig: WebsocketClientConfig) {
|
@@ -13,7 +13,7 @@ import { WebsocketServerConfig } from '@/onebot/config/config';
|
|||||||
import { NapCatOneBot11Adapter } from "@/onebot";
|
import { NapCatOneBot11Adapter } from "@/onebot";
|
||||||
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
import { IOB11NetworkAdapter } from "@/onebot/network/adapter";
|
||||||
|
|
||||||
export class OB11PassiveWebSocketAdapter extends IOB11NetworkAdapter<WebsocketServerConfig> {
|
export class OB11WebSocketServerAdapter extends IOB11NetworkAdapter<WebsocketServerConfig> {
|
||||||
wsServer: WebSocketServer;
|
wsServer: WebSocketServer;
|
||||||
wsClients: WebSocket[] = [];
|
wsClients: WebSocket[] = [];
|
||||||
wsClientsMutex = new Mutex();
|
wsClientsMutex = new Mutex();
|
||||||
@@ -176,7 +176,7 @@ export class OB11PassiveWebSocketAdapter extends IOB11NetworkAdapter<WebsocketSe
|
|||||||
this.checkStateAndReply<any>(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient);
|
this.checkStateAndReply<any>(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name);
|
const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name, this.config);
|
||||||
this.checkStateAndReply<any>({ ...retdata }, wsClient);
|
this.checkStateAndReply<any>({ ...retdata }, wsClient);
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue
Block a user