mirror of
https://github.com/ppy/osu.git
synced 2026-05-13 20:33:35 +08:00
aace7f9523
RFC - Requires https://github.com/ppy/osu-server-spectator/pull/366 to actually function. Resolves https://github.com/ppy/osu/issues/35580 Resolves https://github.com/ppy/osu-server-spectator/issues/193 Resolves https://github.com/ppy/osu/issues/35586 Resolves https://github.com/ppy/osu-server-spectator/issues/362 Resolves https://github.com/ppy/osu/issues/37353 ## Outline This enables stateful reconnect for spectator-server endpoints, allowing ConnectionIds to be preserved for a short period and messages to be replayed on reconnect. In practice, this means short disconnects (<30s) should no longer: - Drop replays - Kick you out of multiplayer rooms - Trigger "user has come online" re-alerts. The following video demonstrates two of the above: https://github.com/user-attachments/assets/b9781f31-a8a1-410e-b0ac-65d3374a33d6 Stateful reconnect appears to kick in as long as the socket doesn't get disconnected, _not_ on subsequent re-connections. We have the timeout period set to SignalR's default of 30sec. I've been using the following to simulate a total link loss: ```sh #!/bin/bash DELAY=${1:-1} echo "Conditioning for $DELAY seconds..." sudo ip link set lo down sudo ss -K dst 127.0.0.2 > /dev/null sleep $DELAY sudo ip link set lo up ```
aace7f9523
·
2026-05-08 22:03:56 +09:00
History