mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
fix: listener proxy
This commit is contained in:
parent
bc2da8a645
commit
e3a8285f6c
@ -53,12 +53,12 @@ export abstract class HttpServerBase {
|
||||
next();
|
||||
}
|
||||
|
||||
start(port: number) {
|
||||
start(port: number, host: string) {
|
||||
try {
|
||||
this.expressAPP.get('/', (req: Request, res: Response) => {
|
||||
res.send(`${this.name}已启动`);
|
||||
});
|
||||
this.listen(port);
|
||||
this.listen(port, host);
|
||||
} catch (e: any) {
|
||||
logError('HTTP服务启动失败', e.toString());
|
||||
// llonebotError.httpServerError = "HTTP服务启动失败, " + e.toString()
|
||||
@ -73,9 +73,9 @@ export abstract class HttpServerBase {
|
||||
}
|
||||
}
|
||||
|
||||
restart(port: number) {
|
||||
restart(port: number, host: string) {
|
||||
this.stop();
|
||||
this.start(port);
|
||||
this.start(port, host);
|
||||
}
|
||||
|
||||
abstract handleFailed(res: Response, payload: any, err: any): void
|
||||
@ -108,9 +108,10 @@ export abstract class HttpServerBase {
|
||||
});
|
||||
}
|
||||
|
||||
protected listen(port: number) {
|
||||
this.server = this.expressAPP.listen(port, '0.0.0.0', () => {
|
||||
const info = `${this.name} started 0.0.0.0:${port}`;
|
||||
protected listen(port: number, host: string = '0.0.0.0') {
|
||||
host = host || '0.0.0.0';
|
||||
this.server = this.expressAPP.listen(port, host, () => {
|
||||
const info = `${this.name} started ${host}:${port}`;
|
||||
log(info);
|
||||
});
|
||||
}
|
||||
|
@ -27,12 +27,14 @@ export class WebsocketServerBase {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
start(port: number) {
|
||||
start(port: number, host: string = '') {
|
||||
try {
|
||||
this.ws = new WebSocketServer({
|
||||
port ,
|
||||
host: '',
|
||||
maxPayload: 1024 * 1024 * 1024
|
||||
});
|
||||
log(`ws服务启动成功, ${host}:${port}`);
|
||||
} catch (e: any) {
|
||||
throw Error('ws服务启动失败, ' + e.toString());
|
||||
}
|
||||
|
@ -36,6 +36,9 @@ export class ConfigBase<T>{
|
||||
const data = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
||||
logDebug(`配置文件${configPath}已加载`, data);
|
||||
Object.assign(this, data);
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
this.save(this); // 保存一次,让新版本的字段写入
|
||||
return this;
|
||||
} catch (e: any) {
|
||||
if (e instanceof SyntaxError) {
|
||||
@ -48,9 +51,10 @@ export class ConfigBase<T>{
|
||||
}
|
||||
|
||||
save(config: T) {
|
||||
Object.assign(this, config);
|
||||
const configPath = this.getConfigPath();
|
||||
try {
|
||||
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
||||
fs.writeFileSync(configPath, JSON.stringify(this, null, 2));
|
||||
} catch (e: any) {
|
||||
logError(`保存配置文件 ${configPath} 时发生错误:`, e.message);
|
||||
}
|
||||
|
@ -5,9 +5,11 @@ import { logDebug, logError } from '@/common/utils/log';
|
||||
import { ConfigBase } from '@/common/utils/ConfigBase';
|
||||
|
||||
export interface OB11Config {
|
||||
httpHost: string;
|
||||
httpPort: number;
|
||||
httpPostUrls: string[];
|
||||
httpSecret: string;
|
||||
wsHost: string;
|
||||
wsPort: number;
|
||||
wsReverseUrls: string[];
|
||||
enableHttp: boolean;
|
||||
@ -29,9 +31,11 @@ export interface OB11Config {
|
||||
|
||||
|
||||
class Config extends ConfigBase<OB11Config> implements OB11Config {
|
||||
httpHost: string = '';
|
||||
httpPort: number = 3000;
|
||||
httpPostUrls: string[] = [];
|
||||
httpSecret = '';
|
||||
wsHost: string = '';
|
||||
wsPort = 3001;
|
||||
wsReverseUrls: string[] = [];
|
||||
enableHttp = false;
|
||||
|
@ -52,10 +52,10 @@ export class NapCatOnebot11 {
|
||||
selfInfo.nick = user.nick;
|
||||
}).catch(logError);
|
||||
if (ob11Config.enableHttp) {
|
||||
ob11HTTPServer.start(ob11Config.httpPort);
|
||||
ob11HTTPServer.start(ob11Config.httpPort, ob11Config.httpHost);
|
||||
}
|
||||
if (ob11Config.enableWs) {
|
||||
ob11WebsocketServer.start(ob11Config.wsPort);
|
||||
ob11WebsocketServer.start(ob11Config.wsPort, ob11Config.wsHost);
|
||||
}
|
||||
if (ob11Config.enableWsReverse) {
|
||||
ob11ReverseWebsockets.start();
|
||||
|
@ -18,9 +18,9 @@ const heartbeatRunning = false;
|
||||
|
||||
class OB11WebsocketServer extends WebsocketServerBase {
|
||||
|
||||
public start(port: number) {
|
||||
public start(port: number, host: string) {
|
||||
this.token = ob11Config.token;
|
||||
super.start(port);
|
||||
super.start(port, host);
|
||||
}
|
||||
|
||||
authorizeFailed(wsClient: WebSocket) {
|
||||
@ -43,6 +43,8 @@ class OB11WebsocketServer extends WebsocketServerBase {
|
||||
onConnect(wsClient: WebSocket, url: string, req: IncomingMessage) {
|
||||
if (url == '/api' || url == '/api/' || url == '/') {
|
||||
wsClient.on('message', async (msg) => {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
let receiveData: { action: ActionName, params: any, echo?: any } = { action: '', params: {} };
|
||||
let echo = null;
|
||||
try {
|
||||
|
@ -1,14 +1,18 @@
|
||||
import { WebSocket as WebSocketClass } from 'ws';
|
||||
import { OB11Response } from '../../action/OB11Response';
|
||||
import { PostEventType } from '../postOB11Event';
|
||||
import { log, logDebug, logError } from '../../../common/utils/log';
|
||||
import { isNull } from '../../../common/utils/helper';
|
||||
import { log, logDebug, logError } from '@/common/utils/log';
|
||||
import { isNull } from '@/common/utils/helper';
|
||||
|
||||
|
||||
export function wsReply(wsClient: WebSocketClass, data: OB11Response | PostEventType) {
|
||||
try {
|
||||
const packet = Object.assign({}, data);
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
if (isNull(packet['echo'])) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-expect-error
|
||||
delete packet['echo'];
|
||||
}
|
||||
wsClient.send(JSON.stringify(packet));
|
||||
|
Loading…
x
Reference in New Issue
Block a user