Skip to content

Add distributed Switcher.IO service

Olivier Gauthier requested to merge feat/switcherio-server into 5.x

Extend work on Switcher.IO back-end to add a rendez-vous service and control multiple distributed Switcher instances.

Multiple Switcher instances can register in a SwitcherIO session, but service will only forward API calls to the first registered Switcher for now. Client can be started first and will retry connecting to service indefinitely using Socket.IO wait back-off logic (default to 5 seconds between connection retries). Service can be restarted, clients will reconnect automatically, and service will re-register them to default session transparently.

User authentication is yet to be implemented, but a basic application pre-authentication using a pre-shared key allow to mitigate open-relay scenarios while testing a MVP service on public networks.

  • Implement UserTree session persistence in SwitcherIOServer instead of Quiddity
  • Allow service to join and leave clients from a session
  • Register switcher instances in SwitcherIO session
  • Disable default root Socket.io namespace "/" to force authentication on "/switcherio" namespace
  • Add Switcher.IO application pre-authentication using a pre-shared key
  • Generate Switcher instance name with a unique hash identifier computed from hostname and MAC address
  • Allow swctl to output error message on every API calls
  • Add --name argument to swctl command to fetch Switcher instance name
  • Use asyncio coros for SwitcherIOClient and SwitcherIOServer entry points
  • Add standalone mode to switcher launcher when no url argument is configured
  • Add Socket.IO Admin UI instrumentation to debug Socket.IO connections
  • Update python-socketio library from 5.11.0 to 5.11.1 to allow client to wait and retry connection during start
  • Move libswitcher wrapper from SwitcherIOServer to SwitcherIOClient
  • Add swservice launcher command
Edited by Olivier Gauthier

Merge request reports