From 5dcc678ad43414146ebe98d7eeea538048e7daeb Mon Sep 17 00:00:00 2001 From: abearxiong Date: Tue, 30 Dec 2025 18:32:16 +0800 Subject: [PATCH] chore: update version to 0.0.52, add eventemitter3 dependency, and refactor WebSocket handling --- package.json | 12 ++++++------ pnpm-lock.yaml | 11 ++++++++--- src/server/server-base.ts | 6 +++++- src/server/server-bun.ts | 1 + src/server/server-type.ts | 2 +- src/server/ws-server.ts | 3 ++- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index eae7f30..36f739b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@kevisual/router", - "version": "0.0.51", + "version": "0.0.52", "description": "", "type": "module", "main": "./dist/router.js", @@ -32,9 +32,8 @@ "@types/bun": "^1.3.5", "@types/node": "^25.0.3", "@types/send": "^1.2.1", - "@types/ws": "^8.18.1", "@types/xml2js": "^0.4.14", - "cookie": "^1.1.1", + "@types/ws": "^8.18.1", "nanoid": "^5.1.6", "rollup": "^4.54.0", "rollup-plugin-dts": "^6.3.0", @@ -43,9 +42,10 @@ "tslib": "^2.8.1", "tsx": "^4.21.0", "typescript": "^5.9.3", - "ws": "npm:@kevisual/ws", "xml2js": "^0.6.2", - "zod": "^4.2.1" + "zod": "^4.2.1", + "eventemitter3": "^5.0.1", + "ws": "npm:@kevisual/ws" }, "repository": { "type": "git", @@ -95,4 +95,4 @@ "require": "./src/*" } } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8819f21..36e254c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + eventemitter3: + specifier: ^5.0.1 + version: 5.0.1 path-to-regexp: specifier: ^8.3.0 version: 8.3.0 @@ -51,9 +54,6 @@ importers: '@types/xml2js': specifier: ^0.4.14 version: 0.4.14 - cookie: - specifier: ^1.1.1 - version: 1.1.1 nanoid: specifier: ^5.1.6 version: 5.1.6 @@ -762,6 +762,9 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -1741,6 +1744,8 @@ snapshots: etag@1.8.1: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} fast-deep-equal@3.1.3: {} diff --git a/src/server/server-base.ts b/src/server/server-base.ts index b01bd71..5b62d1f 100644 --- a/src/server/server-base.ts +++ b/src/server/server-base.ts @@ -3,7 +3,7 @@ import { handleServer } from './handle-server.ts'; import * as cookie from './cookie.ts'; import { ServerType, Listener, OnListener, ServerOpts, OnWebSocketOptions, OnWebSocketFn, WebSocketListenerFun, ListenerFun, HttpListenerFun, WS } from './server-type.ts'; import { parseIfJson } from '../utils/parse.ts'; -import { EventEmitter } from 'events'; +import { EventEmitter } from 'eventemitter3'; type CookieFn = (name: string, value: string, options?: cookie.SerializeOptions, end?: boolean) => void; export type HandleCtx = { @@ -273,6 +273,10 @@ export class ServerBase implements ServerType { end({ code: 500, message: `${type} server is error` }); } } + /** + * 根据emitter提醒关闭ws连接 + * @param ws + */ async onWsClose(ws: WS) { const id = ws?.data?.id || ''; if (id) { diff --git a/src/server/server-bun.ts b/src/server/server-bun.ts index cfe4954..82ffc11 100644 --- a/src/server/server-bun.ts +++ b/src/server/server-bun.ts @@ -253,6 +253,7 @@ export class BunServer extends ServerBase implements ServerType { }, close: (ws: any) => { // WebSocket 连接关闭 + ws?.data?.close?.(); this.onWsClose(ws); }, }, diff --git a/src/server/server-type.ts b/src/server/server-type.ts index c0fb19b..8f38b78 100644 --- a/src/server/server-type.ts +++ b/src/server/server-type.ts @@ -1,4 +1,4 @@ -import EventEmitter from 'node:events'; +import { EventEmitter } from 'eventemitter3'; import * as http from 'node:http'; diff --git a/src/server/ws-server.ts b/src/server/ws-server.ts index ebc42ea..45bd254 100644 --- a/src/server/ws-server.ts +++ b/src/server/ws-server.ts @@ -2,7 +2,6 @@ import { WebSocketServer } from 'ws'; import type { WebSocket } from 'ws'; import { ServerType } from './server-type.ts' -import { parseIfJson } from '../utils/parse.ts'; import { isBun } from '../utils/is-engine.ts'; @@ -62,6 +61,8 @@ export class WsServerBase { }); this.server.sendConnected(ws); this.wss.on('close', () => { + // @ts-ignore + ws?.data?.close?.(); this.server.onWsClose(ws); }); });