Skip to content

Websocket Protocol v2 #237

Description

@cjs8487

We've heard feedback from outside websocket consumers about some shortcomings of the websocket protocol, especially for third party clients. Overall, the general consensus is the following problems/shortcomings

  • No indication of when a board was last generated
    • This means that clients with autotracking have no reliable mechanism of resetting tracking progress if metadata is not absolute
  • Websocket messages should generally be more unique, allowing for consumers to accurate identify the source/trigger of a change
    • For marked/unmarked goals, this should be separate message types
    • syncBoard should be retired in favor of "boardGenerated" "boardRevealed" and other similar events
    • chat events should be strictly for user sent chat messages, not system messages representing state changes in text form
  • The following event types should be added
    • boardGenerated which indicates that the board (re)generated
    • timerStart, timerStop
    • playerUpdate, a generic message indicating that there has been change to the data of a specific player
  • updateRoomData should be deprecated as it is too broad to be particularly useful, and roomData could realistically be synced as a universal element across message types

Additionally, consumers may find the following changes useful

  • Include roomData with all message types
  • switch player list to a map of id to player object to make lookups easier/faster (O(n) filter -> O(1) lookup)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestwebsocketIssue impacts websocket communication or protocol

    Projects

    Status
    Next Major Version Planned

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions