Saltar a contenido

nchan: Servidor pub/sub escalable y flexible para la web moderna

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-nchan
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-nchan

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_nchan_module.so;

Este documento describe nginx-module-nchan v1.3.8 lanzado el 15 de febrero de 2026.


https://nchan.io

Nchan es un servidor pub/sub escalable y flexible para la web moderna, construido como un módulo para el servidor web Nginx. Puede configurarse como un servidor independiente, o como un intermediario entre tu aplicación y cientos, miles o millones de suscriptores en vivo. Puede almacenar mensajes en memoria, en disco, o a través de Redis. Todas las conexiones se manejan de forma asíncrona y se distribuyen entre cualquier número de procesos de trabajo. También puede escalar a muchos servidores Nginx con Redis.

Los mensajes se publican en canales mediante solicitudes HTTP POST o Websocket, y se suscriben a través de Websocket, long-polling, EventSource (SSE), sondeos de intervalo a la antigua, y más.

En un navegador web, puedes usar Websocket o EventSource de forma nativa, o la biblioteca envoltorio NchanSubscriber.js.

Características

  • API RESTful, nativa de HTTP
  • Soporta Websocket, EventSource (Eventos enviados por el servidor), Long-Polling y otros suscriptores basados en HTTP
  • Buffers de mensajes configurables por canal con garantías de entrega de mensajes sin repetición y sin pérdida
  • Suscríbete a cientos de canales a través de una única conexión de suscriptor
  • Callbacks y hooks de solicitudes HTTP para una fácil integración
  • Introspección con eventos de canal y URL para monitorear estadísticas de rendimiento
  • Contabilidad y límites de uso de grupos de canales
  • Almacenamiento local de mensajes en memoria compartida no bloqueante y almacenamiento persistente opcional con Redis
  • Escalable horizontalmente usando Redis
  • Conmutación por error automática y alta disponibilidad con Redis Cluster

Comenzando

Agrega dos ubicaciones a tu configuración de nginx:

http {
  server {
    location = /sub {
      nchan_subscriber;
      nchan_channel_id $arg_id;
    }

    location = /pub {
      nchan_publisher;
      nchan_channel_id $arg_id;
    }
  }
}

Ahora puedes publicar mensajes en un canal enviando datos a /pub?id=channel_id, y suscribirte apuntando Websocket o EventSource a sub/?id=channel_id.

Puntos finales de suscriptor

Nchan soporta varios tipos de suscriptores:

Websocket

location /sub {
  nchan_subscriber websocket;
  nchan_channel_id foobar;
}

EventSource

location /sub {
  nchan_subscriber eventsource;
  nchan_channel_id foobar;
}

Long-Polling

location /sub {
  nchan_subscriber longpoll;
  nchan_channel_id foobar;
}

Puntos finales de publicador

location /pub {
  nchan_publisher;
  nchan_channel_id foobar;
}

Publica un mensaje:

curl -X POST -d "hello world" http://localhost/pub

Almacenamiento Redis

Para escalado horizontal y almacenamiento persistente:

upstream redis_cluster {
  nchan_redis_server redis://127.0.0.1:6379;
}

location /sub {
  nchan_subscriber;
  nchan_channel_id foobar;
  nchan_redis_pass redis_cluster;
}

location /pub {
  nchan_publisher;
  nchan_channel_id foobar;
  nchan_redis_pass redis_cluster;
}

Documentación Completa

Para directivas de configuración completas y documentación detallada, visita la documentación oficial de Nchan.

Secciones clave en la documentación completa: - Multiplexión de canales - Hooks y callbacks para autorización - Configuración de Redis Cluster para alta disponibilidad - Eventos de canal e introspección - Mejores prácticas de seguridad

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-nchan.