Skip to content

hans00/fastWS

Folders and files

NameName
Last commit message
Last commit date
Aug 25, 2022
Jul 4, 2022
Nov 28, 2022
Jul 29, 2022
Nov 28, 2022
Aug 25, 2022
Oct 7, 2021
Oct 7, 2021
May 12, 2022
Jun 16, 2022
Aug 25, 2022
Nov 13, 2019
Aug 25, 2022
Jul 3, 2022
Aug 25, 2022
Nov 28, 2022
Dec 1, 2022

Repository files navigation

fastWS

GitHub Action codecov

It's very fast Web Server Node.js server based on uWebSockets.

And very easy to use.

Benchmark result

Documents

Server package

Client package

Usage

npm i fast-ws-client fast-ws-server

Server

const fastWS = require('fast-ws-server')

const app = new fastWS({ /* options */ })

app.ws('/ws', ws => {
  console.log(`Connected ${ws.remoteAddress}`)

  ws.on('message', ({ data }) => {
    ws.sendMessage(data)
  })

  ws.on('echo', ({ reply, data }) => {
    reply(data)
  })
})

app.post('/post', async (req, res) => {
  const data = await req.body()
  res.json(data)
})

app.get('/hello/:name', async (req, res, params) => {
  res.render([
    '<html>',
    '<head><title>Hello</title></head>',
    '<body><h1>Hello, ${escapeHTML(name)}</h1></body>',
    '</html>'
  ].join(''), params)
})

app.get('/hello/:name/alert', async (req, res, params) => {
  res.render([
    '<html>',
    '<head><title>Hello</title></head>',
    '<body><script>alert("Hello, ${escapeVar(name, String)}")</script></body>',
    '</html>'
  ].join(''), params)
})

app.serve('/*') // auto serve project /static/*

app.listen(3000, () => {
  console.log('Listen on 3000')
})

Client

const Client = require('fast-ws-client')

const client = new Client('ws://server/fast-ws', options)

client.on('connect', () => {
  client.emit('event name', 'message')
})

client.on('event name', async () => {
  await client.emit('wait for remote', 'message', true)
})

Contributing

Follows conventional commits.

For example:

  • feat(Server): something for server feature.

  • fix(Client): something for client bug fix.