Server Sent Events

There is a separate module for Server Sent Events called SSE.

The YouTrack tickets cover what has been implemented: https://youtrack.clueride.com/issues/SSE

Types of SSE

Explore:

  • Three separate channels: Heartbeat, Game Status, and Puzzle Status
  • SSE Supports Subscribers only for Mobile devices
  • SSE supports broadcast requests only from Core server
  • Check out the Server Load when multiple clients are subscribing
  • Sort out the Life-cycle of when the channels are brought up and shut down.
  • Reporting on the Server-side which connections are live (may be part of the API for reporting to the Team page).

Heartbeat

This could be pushed with each position change and then if no new event after a configurable period (20 seconds?), the heartbeat will be sent to confirm connection.

Required Data

  • Event Type Heartbeat
  • GPS coordinates of Guide (tether)
  • Responding to the heartbeat goes back to Connection State on Core Server; absence means loss of connection

Considering the response from clients to confirm the connection is live for each member of the Team (and can be reflected there).

Game State

For a given Outing:

  • Confirming Team (Arrival at Start)
  • Ready to Roll
  • Arrival at next Attraction

Required Data

  • Event Type Game State
  • Outing ID
  • Event Data for Location Change
    • Departing or Arriving
    • When Departing, upcoming Location ID (this is when the next location is revealed)
    • When Arriving, the ID of the location we're arriving at.

Optional Data

  • Timestamp

Puzzle State

For the current puzzle on an outing (up to Core Server to know what this is for the outing)

Required Data

  • Event Type Puzzle State
  • Answer Summaries across team
    • Response total per Answer
    • Total responses

Diagram

This is for the Game State, but the other two are similar.
sse-flow.png
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License