diff --git a/.github/workflows/build-examples.yml b/.github/workflows/build-examples.yml index 43a100ceb9..5fac0ef5d0 100644 --- a/.github/workflows/build-examples.yml +++ b/.github/workflows/build-examples.yml @@ -19,6 +19,8 @@ jobs: - custom-parsers - typescript-example/cjs - typescript-example/esm + - typescript-client-example/cjs + - typescript-client-example/esm - webpack-build - webpack-build-server - basic-crud-application/angular-client diff --git a/examples/typescript-client-example/cjs/client.ts b/examples/typescript-client-example/cjs/client.ts new file mode 100644 index 0000000000..faa7081486 --- /dev/null +++ b/examples/typescript-client-example/cjs/client.ts @@ -0,0 +1,30 @@ +import { io, type Socket } from "socket.io-client"; + +interface ServerToClientEvents { + hello: (val: string) => void; +} + +interface ClientToServerEvents { + ping: (cb: () => void) => void; +} + +const socket: Socket = io("ws://localhost:8080/"); + +socket.on("connect", () => { + console.log(`connect ${socket.id}`); +}); + +socket.on("hello", (val) => { + console.log(`got ${val}`); +}); + +socket.on("disconnect", () => { + console.log(`disconnect`); +}); + +setInterval(() => { + const start = Date.now(); + socket.emit("ping", () => { + console.log(`pong (latency: ${Date.now() - start} ms)`); + }); +}, 1000); diff --git a/examples/typescript-client-example/cjs/package.json b/examples/typescript-client-example/cjs/package.json new file mode 100644 index 0000000000..f6326a62ce --- /dev/null +++ b/examples/typescript-client-example/cjs/package.json @@ -0,0 +1,17 @@ +{ + "name": "typescript-client-example-cjs", + "version": "0.0.1", + "description": "An example with TypeScript", + "type": "commonjs", + "private": true, + "scripts": { + "build": "tsc", + "start": "ts-node client.ts" + }, + "license": "MIT", + "dependencies": { + "socket.io-client": "^4.8.0", + "ts-node": "^10.9.2", + "typescript": "^5.4.5" + } +} diff --git a/examples/typescript-client-example/cjs/tsconfig.json b/examples/typescript-client-example/cjs/tsconfig.json new file mode 100644 index 0000000000..5d3f65f6e9 --- /dev/null +++ b/examples/typescript-client-example/cjs/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "es2022", + "module": "nodenext", + "moduleResolution": "nodenext", + "strict": true + } +} diff --git a/examples/typescript-client-example/esm/client.ts b/examples/typescript-client-example/esm/client.ts new file mode 100644 index 0000000000..fa917ef68d --- /dev/null +++ b/examples/typescript-client-example/esm/client.ts @@ -0,0 +1,30 @@ +import { io, type Socket } from "socket.io-client"; + +interface ServerToClientEvents { + hello: (val: string) => void; +} + +interface ClientToServerEvents { + ping: (cb: () => void) => void; +} + +const socket: Socket = io("ws://localhost:8080/"); + +socket.on("connect", () => { + console.log(`connect ${socket.id}`); +}); + +socket.on("hello", (val) => { + console.log(`got ${val}`); +}); + +socket.on("disconnect", () => { + console.log(`disconnect`); +}); + +setInterval(() => { + const start = Date.now(); + socket.emit("ping", () => { + console.log(`pong (latency: ${Date.now() - start} ms)`); + }); +}, 1000); diff --git a/examples/typescript-client-example/esm/package.json b/examples/typescript-client-example/esm/package.json new file mode 100644 index 0000000000..30df08efbd --- /dev/null +++ b/examples/typescript-client-example/esm/package.json @@ -0,0 +1,17 @@ +{ + "name": "typescript-client-example-esm", + "version": "0.0.1", + "description": "An example with TypeScript", + "type": "module", + "private": true, + "scripts": { + "build": "tsc", + "start": "node --no-warnings=ExperimentalWarning --loader ts-node/esm client.ts" + }, + "license": "MIT", + "dependencies": { + "socket.io-client": "^4.8.0", + "ts-node": "^10.9.2", + "typescript": "^5.4.5" + } +} diff --git a/examples/typescript-client-example/esm/tsconfig.json b/examples/typescript-client-example/esm/tsconfig.json new file mode 100644 index 0000000000..ee44dfc550 --- /dev/null +++ b/examples/typescript-client-example/esm/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "outDir": "dist", + "target": "es2022", + "module": "esnext", + "moduleResolution": "node", + "strict": true + } +} diff --git a/packages/engine.io-client/lib/transports/websocket.node.ts b/packages/engine.io-client/lib/transports/websocket.node.ts index a9f808100c..83777991c1 100644 --- a/packages/engine.io-client/lib/transports/websocket.node.ts +++ b/packages/engine.io-client/lib/transports/websocket.node.ts @@ -15,7 +15,7 @@ export class WS extends BaseWS { uri: string, protocols: string | string[] | undefined, opts: Record, - ) { + ): any { if (this.socket?._cookieJar) { opts.headers = opts.headers || {};