It's very fast Web Server Node.js server based on uWebSockets.
And very easy to use.
npm i fast-ws-client fast-ws-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')
})
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)
})
Follows conventional commits.
For example:
-
feat(Server): something
for server feature. -
fix(Client): something
for client bug fix.