superset/superset-websocket/utils/client-ws-app
Rob DiCiuccio 806fb73d25
feat(SIP-39): Websocket sidecar app (#11498)
* WIP node.js websocket app

* Load testing

* Multi-stream publish with blocking reads

* Use JWT for auth and channel ID

* Update ws jwt cookie name

* Typescript

* Frontend WebSocket transport support

* ws server ping/pong and GC logic

* ws server unit tests

* GC interval config, debug logging

* Cleanup JWT cookie logic

* Refactor asyncEvents.ts to support non-Redux use cases

* Update tests for refactored asyncEvents

* Add eslint, write READMEs, reorg files

* CI workflow

* Moar Apache license headers

* pylint found something

* adjust GH actions workflow

* Improve documentation & comments

* Prettier

* Add configurable logging via Winston

* Add SSL support for Redis connections

* Fix incompatible logger statements

* Apply suggestions from code review

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>

* rename streamPrefix config

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
2021-04-08 11:12:03 -07:00
..
bin feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
public feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
routes feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
views feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
.nvmrc feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
README.md feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
app.js feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
package-lock.json feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00
package.json feat(SIP-39): Websocket sidecar app (#11498) 2021-04-08 11:12:03 -07:00

README.md

Test client application

This Express web application is provided for testing the WebSocket server. It is not required for running the server application, and is provided here for testing and development purposes only.

Running

First, start the WebSocket server:

cd ..
npm run dev-server

Then run the client application:

cd client-ws-app
npm install
npm start

Open http://127.0.0.1:3000 in your web browser.

You can customize the number of WebSocket connections by passing the count in the sockets query param, e.g. http://127.0.0.1:3000?sockets=180, though beware that browsers limit the number of open WebSocket connections to around 200.

Run in conjunction with the loadtest.js script to populate the Redis streams with event data.

Note: this test application is configured to use the server's local config.json values, so care should be taken to not overwrite any sensitive data.