mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-11 23:04:52 +09:00
Implement proper session tracking and resume on reconnect for the WebSocket server.
24 lines
955 B
Plaintext
24 lines
955 B
Plaintext
digraph "Client Reconnection Flow" {
|
|
node [shape=box];
|
|
graph [newrank=true];
|
|
|
|
reconnect [label="Reconnect"];
|
|
wait_hello [label="Wait for hello"];
|
|
resume_session [label="Resume session"];
|
|
new_session [label="New session" style="dashed"];
|
|
wait_continue [label="Wait for continue"];
|
|
connected [label="Connected"];
|
|
lost_connection [label="Connection lost or\nunexpectedly closed\nwhile reconnecting" style="dotted"];
|
|
abort [label="Abort"];
|
|
|
|
{ rank="same"; wait_continue; new_session };
|
|
|
|
lost_connection -> reconnect [label="Wait random delay"];
|
|
reconnect -> wait_hello [label="Connect to /api/socket"];
|
|
wait_hello -> resume_session [label="Receive hello"];
|
|
resume_session -> wait_continue [label="Send resume"];
|
|
wait_continue -> abort [label="Connection closed with 4003"];
|
|
wait_continue -> new_session [label="Receive invalidate"];
|
|
wait_continue -> connected [label="Receive ready"];
|
|
}
|