mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-15 15:24:52 +09:00
Implement proper session tracking and resume on reconnect for the WebSocket server.
113 lines
6.1 KiB
XML
113 lines
6.1 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
|
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
<!-- Generated by graphviz version 2.42.3 (0)
|
|
-->
|
|
<!-- Title: Client Reconnection Flow Pages: 1 -->
|
|
<svg width="441pt" height="496pt"
|
|
viewBox="0.00 0.00 441.00 496.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 492)">
|
|
<title>Client Reconnection Flow</title>
|
|
<polygon fill="white" stroke="transparent" points="-4,4 -4,-492 437,-492 437,4 -4,4"/>
|
|
<!-- reconnect -->
|
|
<g id="node1" class="node">
|
|
<title>reconnect</title>
|
|
<polygon fill="none" stroke="black" points="153.5,-384 62.5,-384 62.5,-348 153.5,-348 153.5,-384"/>
|
|
<text text-anchor="middle" x="108" y="-362.3" font-family="Times,serif" font-size="14.00">Reconnect</text>
|
|
</g>
|
|
<!-- wait_hello -->
|
|
<g id="node2" class="node">
|
|
<title>wait_hello</title>
|
|
<polygon fill="none" stroke="black" points="164.5,-297 51.5,-297 51.5,-261 164.5,-261 164.5,-297"/>
|
|
<text text-anchor="middle" x="108" y="-275.3" font-family="Times,serif" font-size="14.00">Wait for hello</text>
|
|
</g>
|
|
<!-- reconnect->wait_hello -->
|
|
<g id="edge2" class="edge">
|
|
<title>reconnect->wait_hello</title>
|
|
<path fill="none" stroke="black" d="M108,-347.8C108,-336.16 108,-320.55 108,-307.24"/>
|
|
<polygon fill="black" stroke="black" points="111.5,-307.18 108,-297.18 104.5,-307.18 111.5,-307.18"/>
|
|
<text text-anchor="middle" x="187.5" y="-318.8" font-family="Times,serif" font-size="14.00">Connect to /api/socket</text>
|
|
</g>
|
|
<!-- resume_session -->
|
|
<g id="node3" class="node">
|
|
<title>resume_session</title>
|
|
<polygon fill="none" stroke="black" points="173.5,-210 42.5,-210 42.5,-174 173.5,-174 173.5,-210"/>
|
|
<text text-anchor="middle" x="108" y="-188.3" font-family="Times,serif" font-size="14.00">Resume session</text>
|
|
</g>
|
|
<!-- wait_hello->resume_session -->
|
|
<g id="edge3" class="edge">
|
|
<title>wait_hello->resume_session</title>
|
|
<path fill="none" stroke="black" d="M108,-260.8C108,-249.16 108,-233.55 108,-220.24"/>
|
|
<polygon fill="black" stroke="black" points="111.5,-220.18 108,-210.18 104.5,-220.18 111.5,-220.18"/>
|
|
<text text-anchor="middle" x="155.5" y="-231.8" font-family="Times,serif" font-size="14.00">Receive hello</text>
|
|
</g>
|
|
<!-- wait_continue -->
|
|
<g id="node5" class="node">
|
|
<title>wait_continue</title>
|
|
<polygon fill="none" stroke="black" points="178,-123 38,-123 38,-87 178,-87 178,-123"/>
|
|
<text text-anchor="middle" x="108" y="-101.3" font-family="Times,serif" font-size="14.00">Wait for continue</text>
|
|
</g>
|
|
<!-- resume_session->wait_continue -->
|
|
<g id="edge4" class="edge">
|
|
<title>resume_session->wait_continue</title>
|
|
<path fill="none" stroke="black" d="M108,-173.8C108,-162.16 108,-146.55 108,-133.24"/>
|
|
<polygon fill="black" stroke="black" points="111.5,-133.18 108,-123.18 104.5,-133.18 111.5,-133.18"/>
|
|
<text text-anchor="middle" x="155" y="-144.8" font-family="Times,serif" font-size="14.00">Send resume</text>
|
|
</g>
|
|
<!-- new_session -->
|
|
<g id="node4" class="node">
|
|
<title>new_session</title>
|
|
<polygon fill="none" stroke="black" stroke-dasharray="5,2" points="433,-123 327,-123 327,-87 433,-87 433,-123"/>
|
|
<text text-anchor="middle" x="380" y="-101.3" font-family="Times,serif" font-size="14.00">New session</text>
|
|
</g>
|
|
<!-- wait_continue->new_session -->
|
|
<g id="edge6" class="edge">
|
|
<title>wait_continue->new_session</title>
|
|
<path fill="none" stroke="black" d="M178.05,-105C220.94,-105 275.39,-105 316.94,-105"/>
|
|
<polygon fill="black" stroke="black" points="316.94,-108.5 326.94,-105 316.94,-101.5 316.94,-108.5"/>
|
|
<text text-anchor="middle" x="252.5" y="-111.8" font-family="Times,serif" font-size="14.00">Receive invalidate</text>
|
|
</g>
|
|
<!-- connected -->
|
|
<g id="node6" class="node">
|
|
<title>connected</title>
|
|
<polygon fill="none" stroke="black" points="92,-36 0,-36 0,0 92,0 92,-36"/>
|
|
<text text-anchor="middle" x="46" y="-14.3" font-family="Times,serif" font-size="14.00">Connected</text>
|
|
</g>
|
|
<!-- wait_continue->connected -->
|
|
<g id="edge7" class="edge">
|
|
<title>wait_continue->connected</title>
|
|
<path fill="none" stroke="black" d="M61.23,-86.99C53.95,-82.28 47.4,-76.37 43,-69 39.01,-62.33 38.18,-54.22 38.78,-46.49"/>
|
|
<polygon fill="black" stroke="black" points="42.27,-46.77 40.32,-36.36 35.35,-45.72 42.27,-46.77"/>
|
|
<text text-anchor="middle" x="93.5" y="-57.8" font-family="Times,serif" font-size="14.00">Receive ready</text>
|
|
</g>
|
|
<!-- abort -->
|
|
<g id="node8" class="node">
|
|
<title>abort</title>
|
|
<polygon fill="none" stroke="black" points="198,-36 142,-36 142,0 198,0 198,-36"/>
|
|
<text text-anchor="middle" x="170" y="-14.3" font-family="Times,serif" font-size="14.00">Abort</text>
|
|
</g>
|
|
<!-- wait_continue->abort -->
|
|
<g id="edge5" class="edge">
|
|
<title>wait_continue->abort</title>
|
|
<path fill="none" stroke="black" d="M131.28,-86.66C137.25,-81.45 143.3,-75.4 148,-69 153.19,-61.93 157.5,-53.45 160.88,-45.5"/>
|
|
<polygon fill="black" stroke="black" points="164.14,-46.78 164.56,-36.19 157.63,-44.21 164.14,-46.78"/>
|
|
<text text-anchor="middle" x="260.5" y="-57.8" font-family="Times,serif" font-size="14.00">Connection closed with 4003</text>
|
|
</g>
|
|
<!-- lost_connection -->
|
|
<g id="node7" class="node">
|
|
<title>lost_connection</title>
|
|
<polygon fill="none" stroke="black" stroke-dasharray="1,5" points="188.5,-488 27.5,-488 27.5,-435 188.5,-435 188.5,-488"/>
|
|
<text text-anchor="middle" x="108" y="-472.8" font-family="Times,serif" font-size="14.00">Connection lost or</text>
|
|
<text text-anchor="middle" x="108" y="-457.8" font-family="Times,serif" font-size="14.00">unexpectedly closed</text>
|
|
<text text-anchor="middle" x="108" y="-442.8" font-family="Times,serif" font-size="14.00">while reconnecting</text>
|
|
</g>
|
|
<!-- lost_connection->reconnect -->
|
|
<g id="edge1" class="edge">
|
|
<title>lost_connection->reconnect</title>
|
|
<path fill="none" stroke="black" d="M108,-434.95C108,-422.36 108,-407.17 108,-394.35"/>
|
|
<polygon fill="black" stroke="black" points="111.5,-394.24 108,-384.24 104.5,-394.24 111.5,-394.24"/>
|
|
<text text-anchor="middle" x="175.5" y="-405.8" font-family="Times,serif" font-size="14.00">Wait random delay</text>
|
|
</g>
|
|
</g>
|
|
</svg>
|