GameSocketEvent typedef
The socket carries exactly one message: the complete live truth about the game as this seat sees it.
The server never reads from this socket, since every client-to-server command rides HTTP, so this is a one-way feed of Session snapshots. There is deliberately nothing else on it, and no "connected" signal to reason about: an open always answers with a snapshot, so there is never a window in which a client holds a frame without the status it belongs to, and never anything to infer from the bare fact of connecting.
frame is only ever this socket's own seat's view. The server resolves the
seat from the connection's authenticated principal against the roster before
sending, so another player's hidden information never crosses the wire, and a
client holding no seat receives the envelope with no frame at all.
Implementation
typedef GameSocketEvent = Session;