Centrifugo es un servidor de mensajería en tiempo real escalable de código abierto. Centrifugo puede entregar mensajes instantáneamente a usuarios de aplicaciones en línea conectados a través de transportes compatibles (WebSocket, HTTP-streaming, SSE/EventSource, GRPC, WebTransport). Centrifugo tiene el concepto de suscripciones a canales, por lo que es un servidor PUB/SUB orientado al usuario.
Centrifugo es independiente del idioma y se puede utilizar para crear aplicaciones de chat, comentarios en vivo, juegos multijugador, visualizaciones de datos en tiempo real, herramientas colaborativas, etc., en combinación con cualquier backend. Es muy adecuado para arquitecturas modernas y permite desacoplar la lógica empresarial de la capa de transporte en tiempo real.
Varios SDK de cliente oficiales para navegadores y desarrollo móvil envuelven el protocolo bidireccional. Además, Centrifugo admite un enfoque unidireccional para casos de uso simples sin dependencia de SDK.
Documentación
- Sitio de documentación oficial de Centrifugo
- Instrucciones de instalación
- Tutorial de introducción
- Descripción general del diseño y uso idiomático.
- Cree una aplicación de mensajería/chat WebSocket con el tutorial de Centrifugo
- Blog centrífugo
- Preguntas frecuentes
Únete a la comunidad
- Telegrama
- Discordia
- Gorjeo
¿Por qué centrifugar?
La idea central de Centrifugo es simple: es un servidor PUB/SUB además de transportes modernos en tiempo real:
La parte difícil es hacer que este concepto esté listo para producción, sea eficiente, flexible y esté disponible desde diferentes entornos de aplicaciones. Centrifugo es una solución madura que ya ayudó a muchos proyectos a agregar funciones en tiempo real y escalar hacia muchas conexiones simultáneas. Centrifugo proporciona un conjunto de funciones que no están disponibles en otras soluciones de código abierto del área:
- Transportes eficientes en tiempo real: WebSocket, HTTP-streaming, Server-Sent Events (SSE), GRPC, WebTransport
- Escalabilidad incorporada con Redis (o Redis Cluster, o almacenamiento compatible con Redis, por ejemplo, AWS Elasticache, KeyDB, DragonflyDB, etc.) o Nats.
- API de servidor HTTP y GRPC simple para comunicarse con Centrifugo desde el backend de la aplicación
- Mecanismos de autenticación de conexión flexibles: JWT y tipo proxy
- Multiplexación de suscripción de canales a través de una única conexión
- Diferentes tipos de suscripciones: del lado del cliente y del lado del servidor
- Varias estrategias de permisos de canales, concepto de espacio de nombres de canales
- Historial de mensajes activos en los canales, con recuperación automática de mensajes al volver a conectarse, modo de recuperación de caché (entrega la última publicación inmediatamente después de la suscripción)
- Compresión delta en canales basada en algoritmo Fossil
- Información de presencia del canal en línea, con notificaciones de entrada/salida
- Una forma de enviar llamadas RPC al backend a través de la conexión en tiempo real
- Protocolo de cliente estricto y eficaz incluido en varios SDK oficiales
- Transferencia de mensajes JSON y Protobuf binario, con serialización optimizada
- Hermosa interfaz de usuario web de administración integrada
- Y mucho más, visite el sitio de documentación de Centrifugo
Apoyo
Este repositorio está alojado en packagecloud.io.
También gracias a JetBrains por admitir OSS (la mayor parte del código aquí escrito en Goland):