Session

skinparam style strictuml
hide footbox
title Initial connection

actor User
box "Client-side"
participant Frontend
end box

box "Server-side" #lightblue
participant Backend
end box

User -> Frontend : Loads app/page
activate Frontend
Frontend -> Backend : Connects to backend (WS)
activate Backend
Frontend <-- Backend : Connection response (WS)
Frontend -> Backend : 1. REGISTER_VIEWER
Frontend <--[#red] Backend : <font color="red">2. REGISTER_VIEWER_ACK [Check 1]</font>
deactivate Backend
User <-- Frontend : Connection info updated
deactivate Frontend

ACCESS_CARTA_DEFAULT

See the source code.

  1. Frontend sends: REGISTER_VIEWER (RegisterViewer)

    session_id = "0"
    api_key = ""
    client_feature_flags = 5
    
  2. Backend returns: REGISTER_VIEWER_ACK (RegisterViewerAck)

Check 1: the backend message shoduld satisfies:

  • REGISTER_VIEWER_ACK should arrives within 100 ms

  • REGISTER_VIEWER_ACK should contains:

success = True
session_id = <some number>
session_type = 0
server_feature_flags = 8
user_preferences = {}
user_layouts = {}

ACCESS_CARTA_KNOWN_SESSION

See the source code.

  1. Frontend sends: REGISTER_VIEWER (RegisterViewer)

    session_id = "9999"
    api_key = ""
    client_feature_flags = 5
    
  2. Backend returns: REGISTER_VIEWER_ACK (RegisterViewerAck)

Check 1: the backend message shoduld satisfies:

  • REGISTER_VIEWER_ACK should arrives within 100 ms

  • REGISTER_VIEWER_ACK should contains:

success = True
session_id = "9999"
session_type = 1
server_feature_flags = 8
user_preferences = {}
user_layouts = {}
message = <not empty>

ACCESS_CARTA_NO_CLIENT_FEATURE

See the source code.

  1. Frontend sends: REGISTER_VIEWER (RegisterViewer)

    session_id = "0"
    api_key = ""
    client_feature_flags = 0
    
  2. Backend returns: REGISTER_VIEWER_ACK (RegisterViewerAck)

Check 1: the backend message shoduld satisfies:

  • REGISTER_VIEWER_ACK should arrives within 100 ms

  • REGISTER_VIEWER_ACK should contains:

success = True
session_id = <some number>
session_type = 0
server_feature_flags = 8
user_preferences = {}
user_layouts = {}
message = <not empty>

ACCESS_CARTA_SAME_ID_TWICE

See the source code.

  1. Frontend sends: REGISTER_VIEWER (RegisterViewer)

    session_id = "12345"
    api_key = ""
    client_feature_flags = 5
    
  2. Backend returns: REGISTER_VIEWER_ACK (RegisterViewerAck)

  3. Frontend sends: REGISTER_VIEWER (RegisterViewer)

    session_id = "12345"
    api_key = ""
    client_feature_flags = 5
    
  4. Backend returns: REGISTER_VIEWER_ACK (RegisterViewerAck)

Check 1: the backend message shoduld satisfies:

  • REGISTER_VIEWER_ACK should arrives within 100 ms

  • REGISTER_VIEWER_ACK should contains:

success = True
session_id = "12345"
session_type = 1
server_feature_flags = 8
user_preferences = {}
user_layouts = {}