Pular para conteúdo

nchan: Servidor pub/sub escalável e flexível para a web moderna

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_nchan_module.so;

Este documento descreve o nginx-module-nchan v1.3.8 lançado em 15 de fevereiro de 2026.


https://nchan.io

Nchan é um servidor pub/sub escalável e flexível para a web moderna, construído como um módulo para o Nginx. Ele pode ser configurado como um servidor autônomo ou como um intermediário entre sua aplicação e centenas, milhares ou milhões de assinantes ativos. Ele pode armazenar mensagens em memória, em disco ou via Redis. Todas as conexões são tratadas de forma assíncrona e distribuídas entre qualquer número de processos de trabalho. Ele também pode escalar para muitos servidores Nginx com Redis.

As mensagens são publicadas em canais com requisições HTTP POST ou Websocket, e assinadas através de Websocket, long-polling, EventSource (SSE), polling por intervalo à moda antiga e mais.

Em um navegador web, você pode usar Websocket ou EventSource nativamente, ou a biblioteca wrapper NchanSubscriber.js.

Recursos

  • API RESTful, nativa em HTTP
  • Suporta Websocket, EventSource (Eventos Enviados pelo Servidor), Long-Polling e outros assinantes baseados em HTTP
  • Buffers de mensagens configuráveis por canal com garantias de entrega de mensagens sem repetição e sem perda
  • Assine centenas de canais através de uma única conexão de assinante
  • Callbacks e hooks de requisições HTTP para fácil integração
  • Introspecção com eventos de canal e URL para monitoramento de estatísticas de desempenho
  • Contabilidade e limites de uso de grupos de canais
  • Armazenamento local de mensagens em memória compartilhada não bloqueante e armazenamento persistente opcional com Redis
  • Escalável horizontalmente usando Redis
  • Auto-failover e alta disponibilidade com Redis Cluster

Começando

Adicione duas localizações à sua configuração do nginx:

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

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

Agora você pode publicar mensagens em um canal enviando dados para /pub?id=channel_id, e assinar apontando Websocket ou EventSource para sub/?id=channel_id.

Endpoints de Assinante

Nchan suporta vários tipos de assinantes:

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;
}

Endpoints de Publicador

location /pub {
  nchan_publisher;
  nchan_channel_id foobar;
}

Publique uma mensagem:

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

Armazenamento Redis

Para escalabilidade horizontal e armazenamento 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;
}

Documentação Completa

Para diretrizes de configuração completas e documentação detalhada, visite a documentação oficial do Nchan.

Seções principais na documentação completa: - Multiplexação de canais - Hooks e callbacks para autorização - Configuração do Redis Cluster para alta disponibilidade - Eventos de canal e introspecção - Melhores práticas de segurança

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-nchan.