Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wll8/express-ws
Quickly implement websocket API in express.
https://github.com/wll8/express-ws
express websocket
Last synced: about 1 month ago
JSON representation
Quickly implement websocket API in express.
- Host: GitHub
- URL: https://github.com/wll8/express-ws
- Owner: wll8
- Created: 2022-05-19T06:44:41.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-12T02:36:34.000Z (about 1 year ago)
- Last Synced: 2024-11-11T01:45:55.877Z (about 1 month ago)
- Topics: express, websocket
- Language: TypeScript
- Homepage:
- Size: 61.5 KB
- Stars: 25
- Watchers: 4
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# express-ws
Quickly implement websocket API in express.There are some issues with [HenningM/express-ws](https://github.com/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](#differences) here.
It may provide a solution for the following problems:
- https://github.com/HenningM/express-ws/issues/157
- https://github.com/HenningM/express-ws/issues/126
- https://github.com/HenningM/express-ws/issues/52## Features
- [x] Use directly from app.ws
- [x] http and ws of the same route can exist at the same time
- [x] Support dynamic routing
- [x] Support reading params, query parameters
- [x] Support Typescript## how to use
``` sh
npm i @wll8/express-ws
`````` js
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](https://github.com/wll8/express-ws/blob/ad35c6156aed4f8d195214784ad903f22ce84536/test/index.test.ts#L15)
- 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](https://github.com/wll8/express-ws/blob/ad35c6156aed4f8d195214784ad903f22ce84536/src/type.ts#L25) |
| wsInstance.applyTo | --- | wll8: No |
| --- | wsInstance.wsRoute[] | [{route, wss, mid}](https://github.com/wll8/express-ws/blob/ad35c6156aed4f8d195214784ad903f22ce84536/src/type.ts#L25), 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](https://opensource.org/licenses/MIT)Copyright (c) 2022-present, wll8