1
0
mirror of https://github.com/ppy/osu.git synced 2026-05-13 20:33:35 +08:00
Files
osu-lazer/osu.Game
T
Dan Balasescu aace7f9523 Enable stateful reconnects (#35658)
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
..
2026-03-19 00:05:52 +09:00
2025-12-29 16:07:14 +09:00
2026-01-13 07:47:25 +03:00
2026-04-28 20:18:30 +09:00