This repository has been archived on 2024-06-23. You can view files and clone it, but cannot push or open issues or pull requests.
api/authentication_loop.wsd

40 lines
1.8 KiB
Plaintext

@startuml Authentication loop
[*] --> Unauthenticated : Application start
Unauthenticated : Reset state, nothing is cached
Unauthenticated --> AuthBegin : Start() is called
state Disconnected {
AuthBegin : Start aquiring WS URL
AuthBegin --> Websocket_Neutral : Got WS URL
Websocket_Neutral : Websocket is waiting for connection
Resume_Fail : Clear all cached session data
Resume_Fail : Disconnect websocket
Resume_Fail --> AuthBegin
Reconnect : Disconnect websocket
Reconnect --> AuthBegin
}
Websocket_Connected --> Reconnect : Reconnect event recieved
Websocket_Connected --> Reconnect : Websocket closes with a reconnectable close code (or no close code at all)
Websocket_Connected --> Reconnect : Invalid session with d set to true
Websocket_Connected --> Reconnect : Heartbeat timeout
state Websocket_Connected {
Websocket_Resume --> Resume_Fail : Invalid session recieved
Websocket_Neutral --> Websocket_Ready : Hello packet recieved
Websocket_Ready : Start heartbeating
Websocket_Ready : Decide to either start new session or resume a previous one
Websocket_Ready --> Websocket_Identify : No session to resume
Websocket_Identify : Start new session
Websocket_Ready --> Websocket_Resume : Previous session is available
Websocket_Resume : Try resuming old session
Websocket_Resume : This should be transparent, as this is fairly common
Websocket_Identify --> Websocket_Running : Ready event recieved
Websocket_Resume --> Websocket_Running : Resumed event recieved
Websocket_Running : Save session details for resume
Websocket_Running : Recieve events and forward them
}
Websocket_Identify -> Websocket_Disabled : Invalid session recieved
Websocket_Connected -> Websocket_Disabled : Rate limit
Websocket_Disabled : Wrong credentials or something is really broken
@enduml