Chat Test Client

1:1 messaging (Phase 1 + 2): chat config, connection, inbox and requests, send, accept, history, catch-up. One user per browser tab. Signed in as —
not connected
Config not fetched yet.
9:41offline

Live events

Events are applied with the documented rules: merge by message id, render in seq order; an event's conversation patch applies only when its number (its lastSeq, else the message's seq) is at least the highest applied; status only moves forward: accepted applies whatever its number, and once accepted is held a pending patch is dropped; a move to accepted from an event re-runs the gap check against the highest lastSeq held; a patch with the other member's card (a full row) for an unknown conversation is inserted, any other patch fetches the conversation first; a gap fetches history after the mark. Pause to hold events; resume dropping them to simulate lost events, then the next event (or "Catch up now") recovers the gap.

Applying events live.

Diagnostics

No thread open.

Raw command

Any method and payload over the connection, e.g. accept your own request (1403), send as the receiver of a pending request (1409), an unknown method or a bad payload (1401).

Log

Notes for local use

Serve this file over http (for example npx http-server test -p 8765) rather than opening it from disk, and open one tab per user (the login is kept per tab).

Gateway calls blocked by the browser: with NODE_ENV=development every origin is allowed; under any other NODE_ENV the page's origin must be listed in ALLOWED_ORIGINS in the gateway's process environment.

Connection fails with only "transport closed" and no close code: the chat server refuses browser connections whose origin it does not know. Set CHAT_CENTRIFUGO_ALLOWED_ORIGINS to this page's origin (scheme://host[:port], no path, no trailing slash, never *; space-separated for several), e.g. CHAT_CENTRIFUGO_ALLOWED_ORIGINS=http://localhost:8765, in .env for docker-compose.yml or .env.test for the test stack, then recreate the chat server container(s). Do not set CENTRIFUGO_CLIENT_ALLOWED_ORIGINS directly: the compose files set it from the CHAT_ key, empty when that is unset. The login itself needs nothing extra: the token travels inside the connect command and the server forwards it as the Authorization header.

Not built yet, so shown disabled: Ignore, Block, the archived requests list, and read marks (opening a thread does not clear its unread count).