| OSS vs PRO | OSS | PRO |
|---|---|---|
| Core MessagingA solid real-time foundation available in both editions | ||
| PUB/SUB, channels, namespaces | ||
| WebSocket, SSE, HTTP-streaming, WebTransport, GRPC transports | ||
| WebSocket bidirectional emulation | ||
| Stream subscriptions with history, recovery, cache mode | ||
| Map subscriptions for state sync | Soon | Soon |
| Presence & join/leave events | ||
| Delta compression, publication filtering by tags | ||
| Proxy events (connect, subscribe, publish, RPC) | ||
| Official real-time SDKs for popular languages | ||
| Security, auth, permissionsProtect your platform, control access at every level | ||
| JWT & proxy authentication | ||
| Channel capabilities & CEL expressions | — | |
Fine-grained permissions on a per-connection or per-subscription basis. Control who can publish, subscribe, or access history — configured via JWT claims or connect/subscribe proxy. Learn more → | ||
| Channel patterns | — | |
Define channel configuration using route-like patterns (e.g. /users/:name) similar to URL routing in web frameworks. Build familiar HTTP-style channel models without listing every namespace. Learn more → | ||
| Operation rate limiting | — | |
Limit the number of subscribe, publish, history, presence, RPC and other operations per connection using a token bucket algorithm. Automatically disconnect clients that generate too many errors. Learn more → | ||
| User blocking API | — | |
Block users at the Centrifugo level — blocked users are immediately disconnected and cannot reconnect. Supports optional persistence to Redis or database so blocks survive restarts. Learn more → | ||
| Token revocation & invalidation | — | |
Revoke individual tokens by JTI claim or invalidate all tokens issued before a specific time using IAT claim. Revocation info is kept in-memory with periodic sync, making checks fast. Learn more → | ||
| Multiple JWKS providers | — | |
Automatically extract and map JWT claims from third-party identity providers into Centrifugo connection metadata. Useful when working with providers that issue non-customizable tokens. Learn more → | ||
| Server API JWKS authentication | — | |
Protect HTTP and GRPC server APIs with JWKS-based JWT authentication. Use tokens from your identity provider (Keycloak, Auth0, etc.) instead of static API keys. Learn more → | ||
| Scalability and performanceLower costs and handle more with fewer resources | ||
| Scale with Redis, Redis Cluster and NATS | ||
| Per-namespace engines | — | |
Use different broker or presence backends per namespace. For example, Redis for most channels but NATS for wildcard subscriptions — within a single Centrifugo setup. Learn more → | ||
| Singleflight & shared position sync | — | |
Merge identical parallel requests to history, presence, or presence stats into one real network request. Particularly effective during massive reconnect scenarios. Learn more → | ||
| Performance optimizations | — | |
Batch periodic client events (ping, presence updates) to reduce CPU usage and system calls. Reported over 2x CPU reduction for idle connections in benchmarks. Learn more → | ||
| Bandwidth optimizations | — | |
Enable delta compression for at-most-once delivery by keeping the latest publication in node memory. Reduces outgoing bandwidth without requiring history or recovery to be enabled. Learn more → | ||
| Advanced message write and batching | — | |
Configure write_delay to collect messages before sending, trading delivery latency for reduced CPU. Can cut overall cluster CPU usage by half for high message rate scenarios. Learn more → | ||
| ObservabilityFull visibility into every connection, channel, and message | ||
| Prometheus metrics, admin UI | ||
| ClickHouse analytics | — | |
Export publications, connections, subscriptions, operations, and push notification events to ClickHouse. Run fast analytical queries with effective data retention policies. Learn more → | ||
| Real-time channel & user tracing | — | |
Attach to any channel or user ID in real time to see all messages and events as they happen. Available in admin UI or via API. Traces can be saved to files for later analysis. Learn more → | ||
| Connection & channel snapshots | — | |
Inspect current state of connections and channels across the cluster. See who is connected, what they are subscribed to, and channel-level stats. Learn more → | ||
| SSO/OIDC for admin UI | — | |
Authenticate admin UI users via any OIDC-compatible identity provider (Okta, KeyCloak, Google, Azure, etc.) with PKCE support. Checks user permissions on every request. Learn more → | ||
| Enhanced metrics | — | |
Channel namespace resolution and client SDK name breakdown in Prometheus metrics, per-node CPU and RSS stats in admin UI, and more. Learn more → | ||
| EngagementReach users even when they are offline | ||
| Push notifications (FCM, APNs, HMS) | — | |
Send push notifications to Android, iOS, and web via FCM, APNs, and HMS. Supports timezone-aware delivery, localization, and templating. Learn more → | ||
| Device token management & topics | — | |
Built-in device token storage in PostgreSQL with topic-based subscriptions and Redis-based worker queues. Centrifugo handles the full push notification lifecycle. Learn more → | ||
| Additional APIs and eventsExtended server-side APIs and channel events for deeper integration | ||
| Channel state events (occupied/vacated)Preview | — | |
Webhook notifications when a channel becomes occupied (first subscriber) or vacated (last subscriber leaves). Requires Redis engine with presence enabled on channels. Learn more → | ||
| Cache empty events | — | |
Proxy notification when a client in cache recovery mode finds no publication in the channel history stream, allowing your backend to populate the cache on demand. Learn more → | ||
| User status API | — | |
Clients call update_user_status RPC on meaningful actions, storing last active time in Redis. Query status for multiple users at once — useful for showing online indicators in chat apps. Learn more → | ||
| Connections API | — | |
Retrieve all active user sessions by user ID or expression without requiring presence. Attach JSON metadata to connections for server-side inspection and session management. Learn more → | ||
| SupportGet help when you need it | ||
| Community support | ||
| Prioritized support | — | |