fastify / fastify-websocket

basic websocket support for fastify
MIT License
394 stars 72 forks source link

Upgrade to v10 breaks because SocketStream is no longer an exported member #294

Closed cope closed 6 months ago

cope commented 6 months ago

Prerequisites

Last working version

9.0.0

Stopped working in version

10.0.0

Node.js version

20.8.0

Operating system

Windows

Operating system version (i.e. 20.04, 11.3, 10)

10

💥 Regression Report

src/server/client/websocket.ts:6:9 - error TS2305: Module '"@fastify/websocket"' has no exported member 'SocketStream'.

import {SocketStream} from '@fastify/websocket';  

Steps to Reproduce

pnpm build...

in my main file:

import fastifyWebsocket from '@fastify/websocket';
...
const server: FastifyInstance<Server, IncomingMessage, ServerResponse> = fastify({
    logger: {
        level: 'warn'
    },
    bodyLimit: 524288000
});
server.register(fastifyWebsocket);
...
await serverRegisterWebsocket(server);

in server.register.websocket.ts:

'use strict';

import {FastifyInstance} from 'fastify';
import {IncomingMessage, Server, ServerResponse} from 'http';

import websocket from '@/server/client/websocket';

const serverRegisterWebsocket = async (server: FastifyInstance<Server, IncomingMessage, ServerResponse>): Promise<void> => {
    server.register(async (s: any) => s.get('/ws', {websocket: true}, websocket));
};
export default serverRegisterWebsocket;

in server/client/websocket:

import {SocketStream} from '@fastify/websocket'; // <-- this is now not valid anymore 😞
...
export default (connection: SocketStream): void => { // <-- this is now not valid anymore 😞
    const {socket} = connection;
    socket.resume();

    socket.on('message', async (message: string) => {...

Expected Behavior

it works as it did in v9...

mcollina commented 6 months ago

Note that v10 contains a breaking change. You are now getting a WebSocket object instead of a SocketStream. See the release notes. I'm shipping a tiny change to help out so that the WebSocket type is exported from the module.

cope commented 6 months ago

Works like a charm 😃 Thanks!