Tiny WebSocket middleware for Node.js based on ws.
npm install tinyws🚡 tiny WebSocket middleware for Node.js
[![Version][v-badge-url]][npm-url] [![Downloads][dl-badge-url]][npm-url] [![GitHub Workflow Status][gh-actions-img]][github-actions] [![Codecov][cov-badge-url]][cov-url]
_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.
- Small size (498B)
- Easy to use (only req.ws and nothing else)
- Framework-agnostic (works with tinyhttp, express etc)
- Written in TypeScript
- Pure ESM
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
``sh`
pnpm i ws tinyws
`ts
import { App, Request } from '@tinyhttp/app'
import { tinyws, TinyWSRequest } from 'tinyws'
const app = new App
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)
`
You can restrict WebSocket handling to specific paths using the paths option:
`ts
// Single path
tinyws(app, server, { paths: '/ws' })
// Multiple paths
tinyws(app, server, { paths: ['/ws', '/socket'] })
``
See examples for express and polka integration.
[v-badge-url]: https://img.shields.io/npm/v/tinyws.svg?style=for-the-badge&color=F55A5A&label=&logo=npm
[npm-url]: https://www.npmjs.com/package/tinyws
[cov-badge-url]: https://img.shields.io/coveralls/github/tinyhttp/tinyws?style=for-the-badge&color=F55A5A
[cov-url]: https://coveralls.io/github/tinyhttp/tinyws
[dl-badge-url]: https://img.shields.io/npm/dt/tinyws?style=for-the-badge&color=F55A5A
[github-actions]: https://github.com/tinyhttp/tinyws/actions
[gh-actions-img]: https://img.shields.io/github/actions/workflow/status/tinyhttp/tinyws/main.yml?branch=master&style=for-the-badge&color=F55A5A&label=&logo=github