graasp/graasp-plugin-websockets

Roadmap

Closed this issue · 0 comments

Tasks

General roadmap of the graasp-websockets project. Tasks that require additional comments and tracking will get their own issues.

Milestones:

  • Simple broadcast abstraction over barebone websockets
  • Integrate fastify-websockets and expose a fastify plugin (packed with fastify-plugin) #2
  • Channels abstraction with pub / sub mechanism
  • Design Message type
  • Validation of client messages
  • Hearbeat to keep list of connected clients up-to-date and avoid memory leaks (see https://github.com/websockets/ws#how-to-detect-and-close-broken-connections)
  • Garbage collection of unused channels ?
  • Integrate into graasp tasks using postHookHandlers
  • Front-end integration
  • Redis multi-instance layer

Fluff:

  • Use semicolons, linter
  • Write docs (together with code)
  • Setup testing framework (Jest?)
  • Setup CI with Github Actions (test, lint, coverage). See https://github.com/nektos/act for local setup?
  • Better README with examples and all the good stuff

Notes

Using npm ci instead of npm install in .github/workflows/main.yml results in SSH key errors in CI. Use npm install instead.

Misc

  • Should we remove Message types and subtypes and keep only types derived from message-schema.ts? Pro: no duplication, con: rely on AJV + JTD. Also, can TS still discriminate union types with JTD's discriminator?