From 132d05fc0b319df7eb1b3010a91adc7d5ae58ef2 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Fri, 20 Sep 2024 10:48:50 +0200 Subject: [PATCH] fix(sio): expose type of default engine Related: https://github.com/socketio/socket.io/issues/4693 --- packages/engine.io/lib/server.ts | 3 +++ packages/engine.io/lib/userver.ts | 4 ++++ packages/socket.io/lib/index.ts | 12 +++++------- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/engine.io/lib/server.ts b/packages/engine.io/lib/server.ts index 95c7e0713..0e3ae063e 100644 --- a/packages/engine.io/lib/server.ts +++ b/packages/engine.io/lib/server.ts @@ -662,6 +662,9 @@ class WebSocketResponse { } } +/** + * An Engine.IO server based on Node.js built-in HTTP server and the `ws` package for WebSocket connections. + */ export class Server extends BaseServer { public httpServer?: HttpServer; private ws: any; diff --git a/packages/engine.io/lib/userver.ts b/packages/engine.io/lib/userver.ts index bbbb04d8a..e8fb47f58 100644 --- a/packages/engine.io/lib/userver.ts +++ b/packages/engine.io/lib/userver.ts @@ -23,6 +23,10 @@ export interface uOptions { maxBackpressure?: number; } +/** + * An Engine.IO server based on the `uWebSockets.js` package. + */ +// TODO export it into its own package export class uServer extends BaseServer { protected init() {} protected cleanup() {} diff --git a/packages/socket.io/lib/index.ts b/packages/socket.io/lib/index.ts index 52353a2fb..b77b8fd3f 100644 --- a/packages/socket.io/lib/index.ts +++ b/packages/socket.io/lib/index.ts @@ -7,11 +7,7 @@ import accepts = require("accepts"); import { pipeline } from "stream"; import path = require("path"); import { attach, Server as Engine, uServer } from "engine.io"; -import type { - ServerOptions as EngineOptions, - AttachOptions, - BaseServer, -} from "engine.io"; +import type { ServerOptions as EngineOptions, AttachOptions } from "engine.io"; import { Client } from "./client"; import { EventEmitter } from "events"; import { ExtendedError, Namespace, ServerReservedEventsMap } from "./namespace"; @@ -228,7 +224,7 @@ export class Server< * const clientsCount = io.engine.clientsCount; * */ - public engine: BaseServer; + public engine: Engine; /** * The underlying Node.js HTTP server. * @@ -712,7 +708,9 @@ export class Server< * @param engine engine.io (or compatible) server * @return self */ - public bind(engine: BaseServer): this { + public bind(engine: any): this { + // TODO apply strict types to the engine: "connection" event, `close()` and a method to serve static content + // this would allow to provide any custom engine, like one based on Deno or Bun built-in HTTP server this.engine = engine; this.engine.on("connection", this.onconnection.bind(this)); return this;