Guides

Realtime

Centrifugo is the default realtime adapter. PostgreSQL remains the archive. Clients recover with messages.sync.

Centrifugo OSS is the default RealtimeAdapter. The engine publishes versioned event envelopes after the outbox worker claims a row.

Channels:

  • conversation:{conversationId}
  • user:{userId}

Subscription tokens are issued only after participant checks. Guessing a channel name is not authorization.

Events include event, eventId, version: 1, occurredAt, and data. Delivery is at-least-once. Clients must ignore duplicate eventId values.

Centrifugo history is a reconnect aid with a bounded TTL. PostgreSQL remains the archive.

Missed events are recovered with messages.sync. Push is a separate best-effort alert path. Provider acceptance is not required for send success and is not a substitute for sync.

After reconnect, refresh the current history page before sequence-only sync so in-place moderation transitions and expiry tombstones are not skipped.

See events and push.