GitHub - tinyhttp/tinyws: ๐ก tiny WebSocket middleware for Node.js
tinyws is a WebSocket middleware for Node.js based on ws, inspired by koa-easy-ws.
Check the chat example out to get familiar with tinyws.
Features
- Small size (498B)
- Easy to use (only
req.wsand nothing else) - Framework-agnostic (works with tinyhttp, express etc)
- Written in TypeScript
- Pure ESM
Why not express-ws?
because express-ws is...
- Abandoned since 2018 ๐
- Doesn't come with types out of the box (have to install
@types/express-ws) - Not compatible with tinyhttp and polka
- Buggy as hell
- Doesn't have tests
Install
Example
import { App, Request } from '@tinyhttp/app' import { tinyws, TinyWSRequest } from 'tinyws' const app = new App<Request & TinyWSRequest>() app.use('/ws', async (req, res) => { if (req.ws) { const ws = await req.ws() return ws.send('hello there') } else { res.send('Hello from HTTP!') } }) const server = app.listen(3000) tinyws(app, server)
Restricting WebSocket to specific paths
You can restrict WebSocket handling to specific paths using the paths option:
// Single path tinyws(app, server, { paths: '/ws' }) // Multiple paths tinyws(app, server, { paths: ['/ws', '/socket'] })
See examples for express and polka integration.