Skip to content

🚡 tiny WebSocket middleware for Node.js

License

Notifications You must be signed in to change notification settings

tinyhttp/tinyws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinyws

🚡 tiny WebSocket middleware for Node.js


Version Downloads GitHub Workflow Status Codecov

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.ws and 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

pnpm i ws tinyws

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.

Sponsor this project

  •  
  •  

Contributors 4

  •  
  •  
  •  
  •