Skip to content

Latest commit

 

History

History
76 lines (61 loc) · 3.57 KB

readme.md

File metadata and controls

76 lines (61 loc) · 3.57 KB

express-ws

Quickly implement websocket API in express.

There are some issues with HenningM/express-ws, the author has not been active for more than 1 year. So I created this project.

This repository is not intended to be a replacement, but to provide options to solve a problem, you can view the differences here.

It may provide a solution for the following problems:

Features

  • Use directly from app.ws
  • http and ws of the same route can exist at the same time
  • Support dynamic routing
  • Support reading params, query parameters
  • Support Typescript

how to use

npm i @wll8/express-ws
const express = require(`express`)
const expressWs = require(`@wll8/express-ws`)
const {app, wsRoute} = expressWs(express())

app.ws(`/abc`, (ws, req) => {
  // const {params, query} = req
  ws.send(`abc`)
})
app.get(`/abc`, (req, res) => {
  res.json(`abc`)
})

app.listen(3040)
  • For more examples see the file: test.js
  • dependencies
    "path-to-regexp": "0.1.7",
    "ws": "7.5.5"
    

differences

Initialization

HenningM wll8 Remark
expressWs(app) expressWs(app) express instance
expressWs(app, server) expressWs({app, server}) http.createServer(app)
expressWs(app, server, options) expressWs({app, server, options}) Other configuration
options.leaveRouterUntouched --- wll8: No
options.wsOptions options.ws wll8: initialization parameters for each ws api

return value

HenningM wll8 Remark
wsInstance.app wsInstance.app wll8: same as app
wsInstance.getWss --- wll8: Get from wsRoute
wsInstance.applyTo --- wll8: No
--- wsInstance.wsRoute[] {route, wss, mid}, For example wss.clients can get all connected clients

Parse the request

HenningM wll8 Remark
--- req.params Parameters in routes
--- req.query query parameter

License

MIT

Copyright (c) 2022-present, wll8