Open
Description
Prerequisites
- I have written a descriptive issue title
- I have searched existing issues to ensure the bug has not already been reported
Fastify version
5.2.0
Plugin version
11.0.1
Node.js version
22.12
Operating system
macOS
Operating system version (i.e. 20.04, 11.3, 10)
Sonoma 14.5
Description
It seems that the full declaration syntax is not supported by @fastify/websocket
types.
Also, when the wsHandler
property is set, the behaviour is the following:
- the
handler
property is still required and typescript throws error when it is not in place; - when the
handler
property is also set, the ws connection is handled by thehandler
property whilewsHandler
is ignored.
Is this the expected behaviour?
import Fastify from 'fastify';
import FastifyWebsocket from '@fastify/websocket';
const app = Fastify();
app.register(FastifyWebsocket);
app.route({
method: 'GET',
url: '/',
websocket: true,
handler: async (websocket, request) => {
// 'websocket' is typed as FastifyRequest, not WebSocket
// 'request' is typed as FastifyReply, not FastifyRequest
},
});
app.route({
method: 'GET',
url: '/',
websocket: true,
wsHandler: (socket, request) => {
console.log('WS'); // not printed
},
handler: (socket, request) => {
console.log(socket.constructor.name === 'WebSocket'); // prints true (when executing "new WebSocket('ws://localhost:3000/')" in the browser)
},
});
Somewhat related issue: #133
Expected Behavior
- The full declaration syntax (
RouteOptions
type) is typed correctly. - wsHandler is executed for ws connection when both
handler
andwsHandler
are defined.
Metadata
Metadata
Assignees
Labels
No labels