Realtime protocol
A complete map of connection tickets, native WebSocket lifecycle, channel subscriptions, events, recovery, presence, and typing.
Handshake
- Authenticate an app user over REST and request a one-use connection ticket.
- Open the released WebSocket URL and offer only the vchat.realtime.v1 subprotocol.
- Treat the connection as usable only after a valid connection.ready envelope.
- Use native Ping/Pong for heartbeat and honor terminal close classifications.
Authorized subscriptions
A connection does not grant channel access by itself. Each channel.subscribe command resolves the exact scoped channel and current channel-type policy, then acknowledges a baseline event sequence. Revocation can remove a live subscription when membership or policy changes.
Durable and private events
Public channel projections cover released message, reply, reaction, and channel behavior. Private user messaging state carries only the authenticated user’s conversation, unread, read, and thread projections. Both use stable event IDs and version fences; channel events also carry eventSequence.
Bounded pressure
- Server frames above the released maximum are rejected.
- Connections bound active/pending subscriptions and in-flight commands.
- Client event processing uses bounded frame and byte budgets.
- A slow consumer closes that socket as terminal; it does not silently drop an ordered event and continue.