Skip to main content
Crosslink scales signaling and relays differently: signaling nodes share short-lived routing state through Redis, while relay channels stay on the region that allocated them. Hosts publish ordered regional fallback URLs so clients do not guess where a channel lives.

Redis-backed signaling

Set the same Redis URL and namespace for every signaling replica:
Redis stores expiring presence and pairing-code hashes and carries opaque cross-node routing messages over pub/sub. Identity keys, session keys, pairing plaintext, and application content are never written to Redis. Use rediss://, Redis ACLs, a private network, eviction monitoring, and a deployment-specific namespace.

Relay quotas

Quota violations close or reject only the affected channel and increment quotaDrops in authenticated relay statistics. Put infrastructure-level connection and request limits in front of the process as a second boundary.

Region catalog

Hosts may also pass relayUrls. Allocation tries each validated HTTPS URL in order and reconnects by reallocating when a channel expires. Every region independently requires host and, when configured, client tokens.
Do not put a TCP load balancer in front of relay WebSockets unless it preserves channel affinity. A channel is process-local by design.