feat(session): add explicit leave and immediate slot release
This commit is contained in:
@@ -14,6 +14,7 @@ browser timestamp from an ESP timestamp.
|
||||
| command to painted view | browser | `move` send to next frame after matching view render |
|
||||
| handler and send | ESP | existing `/diagnostics` maxima |
|
||||
| network round trip | client | ICMP and WebSocket heartbeat samples |
|
||||
| ESP heartbeat handling | ESP | bounded acknowledgement preparation interval |
|
||||
|
||||
The accepted command acknowledgement contains the authoritative `stateSequence`.
|
||||
The browser records a sample only after the complete view with that sequence is
|
||||
@@ -38,6 +39,10 @@ rendered and the next animation frame occurs. Samples are local-only, capped at
|
||||
and send maxima, queue high-water marks, observer view chunk count, and
|
||||
ICMP/WebSocket round trips. Attribute a delay only when the matching
|
||||
interval is elevated.
|
||||
7. For the compact quality indicator, record the rounded `Отклик`, `Связь`,
|
||||
and `ESP` values after the five-second heartbeat cadence has collected a
|
||||
fresh sample. `Связь` is the non-negative round-trip remainder, not a pure
|
||||
Wi-Fi measurement.
|
||||
|
||||
## Safety checks
|
||||
|
||||
|
||||
@@ -66,6 +66,12 @@ closing this presentation-only menu never sends a command or changes server
|
||||
state. Escape and outside activation dismiss it; player actions also close it
|
||||
before opening their existing destination.
|
||||
|
||||
The header response indicator takes at most one heartbeat sample every five
|
||||
seconds, holds one in-flight request, and uses a five-sample median. Good is
|
||||
at most 150 ms, delayed is 151--500 ms, and slow is above 500 ms. Hysteresis
|
||||
holds good until above 175 ms and slow until at most 450 ms; a sample is stale
|
||||
after 15 seconds. Hidden documents and closed sockets do not probe.
|
||||
|
||||
The browser stores the direction for each outstanding move request. A matching
|
||||
server `blocked` rejection may include only that player's approved breakthrough
|
||||
stage, which bends the already rendered bush wall for at most 340 ms without
|
||||
|
||||
+7
-1
@@ -39,6 +39,9 @@ is only echoed for correlation; it grants no authority.
|
||||
- `restart`: `{}`. Only connected Player 1 may reset a finished match, and both
|
||||
players must be connected. Sessions are preserved while a new authoritative
|
||||
maze and game state are created.
|
||||
- `leave`: `{}`. Revokes only the authenticated sending session. A player
|
||||
leaving an unfinished match cancels it for all participants; observer and
|
||||
waiting-lobby departures release only that session.
|
||||
- `heartbeat`: `{}` after a session has been joined or restored.
|
||||
|
||||
## Server messages
|
||||
@@ -60,7 +63,10 @@ is only echoed for correlation; it grants no authority.
|
||||
- `match_result`: reports the terminal winner or draw.
|
||||
- `reset`: reports the authoritative return from a finished match to the
|
||||
waiting lobby.
|
||||
- `ack`: successful heartbeat correlation.
|
||||
- `ack`: successful heartbeat correlation. A heartbeat acknowledgement has
|
||||
`payload.command` set to `heartbeat` and a bounded integer
|
||||
`payload.handlingMs` measured only by the ESP monotonic clock while it
|
||||
prepares that acknowledgement.
|
||||
- `error`: a stable English `code` and Russian player-facing `message`.
|
||||
|
||||
An observer session can receive snapshots but cannot issue `start`, `move`, or
|
||||
|
||||
@@ -106,6 +106,15 @@ are not MVP requirements.
|
||||
help actions during an active player match. The popover is constrained to
|
||||
safe areas, closes on outside activation or Escape, and never contains
|
||||
primary game, lobby, observer, or result actions.
|
||||
- The settings popover shows `Выйти из игры` only for an authenticated session.
|
||||
It opens a confirmation modal; an unfinished player match warns that it ends
|
||||
for everyone, while observer and lobby departures explain that only this
|
||||
browser's place is released.
|
||||
- A compact response indicator between the connection state and gear shows a
|
||||
rounded total response time or an explicit unknown, stale, or offline state.
|
||||
Its accessible description and settings details expose `Отклик`, `Связь`,
|
||||
and `ESP`; `Связь` is a transport remainder and does not assign blame to
|
||||
Wi-Fi, the ESP, or a player.
|
||||
- Countdown, pause, and result states appear as modal overlays above the map.
|
||||
- Textual system notices use one live message rail above the top bar and player
|
||||
status area. It shows one message at a time: connection loss has highest
|
||||
|
||||
Reference in New Issue
Block a user