chore: network context

This commit is contained in:
手瓜一十雪 2024-08-10 16:28:26 +08:00
parent 505c6e0e0e
commit 9f576f43cc
4 changed files with 35 additions and 12 deletions

View File

@ -1,12 +1,18 @@
import { IOB11NetworkAdapter } from '@/onebot/network/index';
import BaseAction from '@/onebot/action/BaseAction';
import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent';
import { NapCatOneBot11Adapter } from '../main';
import { NapCatCore } from '@/core';
export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter {
url: string;
private actionMap: Map<string, BaseAction<any, any>> = new Map();
obContext: NapCatOneBot11Adapter;
coreContext: NapCatCore;
constructor(url: string) {
constructor(obContext: NapCatOneBot11Adapter, coreContext: NapCatCore, url: string) {
this.obContext = obContext;
this.coreContext = coreContext
this.url = url;
}
@ -22,13 +28,13 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter {
},
body: JSON.stringify(event)
})
.then(response => response.json())
.then(data => {
console.log('Event sent successfully:', data);
})
.catch(error => {
console.error('Failed to send event:', error);
});
.then(response => response.json())
.then(data => {
console.log('Event sent successfully:', data);
})
.catch(error => {
console.error('Failed to send event:', error);
});
}
async open() {

View File

@ -4,6 +4,8 @@ import { WebSocket as NodeWebSocket } from 'ws';
import BaseAction from '@/onebot/action/BaseAction';
import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent';
import { sleep } from '@/common/utils/helper';
import { NapCatOneBot11Adapter } from '../main';
import { NapCatCore } from '@/core';
export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
url: string;
@ -12,8 +14,12 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
private connection: NodeWebSocket | null = null;
private actionMap: Map<string, BaseAction<any, any>> = new Map();
obContext: NapCatOneBot11Adapter;
coreContext: NapCatCore;
constructor(url: string, reconnectIntervalInMillis: number) {
constructor(obContext: NapCatOneBot11Adapter, coreContext: NapCatCore, url: string, reconnectIntervalInMillis: number) {
this.obContext = obContext;
this.coreContext = coreContext
this.url = url;
this.reconnectIntervalInMillis = reconnectIntervalInMillis;
}

View File

@ -3,6 +3,8 @@ import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent';
import BaseAction from '@/onebot/action/BaseAction';
import express, { Express, Request, Response } from 'express';
import http from 'http';
import { NapCatOneBot11Adapter } from '../main';
import { NapCatCore } from '@/core';
export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
private app: Express | undefined;
@ -11,8 +13,12 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter {
private hasBeenClosed: boolean = false;
private actionMap: Map<string, BaseAction<any, any>> = new Map();
private port: number;
obContext: NapCatOneBot11Adapter;
coreContext: NapCatCore;
constructor(port: number) {
constructor(obContext: NapCatOneBot11Adapter, coreContext: NapCatCore, port: number) {
this.obContext = obContext;
this.coreContext = coreContext
this.port = port;
}

View File

@ -3,6 +3,8 @@ import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent';
import BaseAction from '@/onebot/action/BaseAction';
import { WebSocket, WebSocketServer } from 'ws';
import { Mutex } from 'async-mutex';
import { NapCatOneBot11Adapter } from '../main';
import { NapCatCore } from '@/core';
export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter {
wsServer: WebSocketServer;
@ -10,10 +12,13 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter {
wsClientsMutex = new Mutex();
isOpen: boolean = false;
hasBeenClosed: boolean = false;
obContext: NapCatOneBot11Adapter;
coreContext: NapCatCore;
private actionMap: Map<string, BaseAction<any, any>> = new Map();
constructor(ip: string, port: number, token: string) {
constructor(obContext: NapCatOneBot11Adapter, coreContext: NapCatCore,ip: string, port: number, token: string) {
this.obContext = obContext;
this.coreContext = coreContext
this.wsServer = new WebSocketServer({ port: port, host: ip });
this.wsServer.on('connection', async (wsClient) => {
if (!this.isOpen) {