Aller au contenu

nchan: Serveur pub/sub évolutif et flexible pour le web moderne

Installation

Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :

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

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

load_module modules/ngx_nchan_module.so;

Ce document décrit nginx-module-nchan v1.3.8 publié le 15 février 2026.


https://nchan.io

Nchan est un serveur pub/sub évolutif et flexible pour le web moderne, construit comme un module pour le Nginx serveur web. Il peut être configuré comme un serveur autonome, ou comme un intermédiaire entre votre application et des centaines, milliers ou millions d'abonnés en direct. Il peut mettre en mémoire tampon les messages en mémoire, sur disque, ou via Redis. Toutes les connexions sont gérées de manière asynchrone et réparties entre n'importe quel nombre de processus de travail. Il peut également évoluer vers de nombreux serveurs Nginx avec Redis.

Les messages sont publiés sur des canaux avec des requêtes HTTP POST ou Websocket, et abonnés via Websocket, long-polling, EventSource (SSE), le vieux polling par intervalle, et plus encore.

Dans un navigateur web, vous pouvez utiliser Websocket ou EventSource nativement, ou la bibliothèque wrapper NchanSubscriber.js.

Fonctionnalités

  • API RESTful, native HTTP
  • Prend en charge Websocket, EventSource (Server-Sent Events), Long-Polling et d'autres abonnés basés sur HTTP
  • Tampons de messages configurables par canal avec des garanties de livraison de messages sans répétition et sans perte
  • Abonnez-vous à des centaines de canaux via une seule connexion d'abonné
  • Rappels et hooks de requête HTTP pour une intégration facile
  • Introspection avec des événements de canal et une URL pour surveiller les statistiques de performance
  • Comptabilité et limites d'utilisation des groupes de canaux
  • Stockage local de messages en mémoire partagée non bloquant et optionnel avec stockage persistant via Redis
  • Évolutif horizontalement en utilisant Redis
  • Basculage automatique et haute disponibilité avec Redis Cluster

Prise en main

Ajoutez deux emplacements à votre configuration nginx :

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

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

Vous pouvez maintenant publier des messages sur un canal en POSTant des données à /pub?id=channel_id, et vous abonner en pointant Websocket ou EventSource vers sub/?id=channel_id.

Points de terminaison des abonnés

Nchan prend en charge plusieurs types d'abonnés :

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

Points de terminaison des éditeurs

location /pub {
  nchan_publisher;
  nchan_channel_id foobar;
}

Publiez un message :

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

Stockage Redis

Pour une mise à l'échelle horizontale et un stockage persistant :

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

Documentation complète

Pour des directives de configuration complètes et une documentation détaillée, visitez la documentation officielle de Nchan.

Sections clés de la documentation complète : - Multiplexage de canaux - Hooks et rappels pour l'autorisation - Configuration de Redis Cluster pour une haute disponibilité - Événements de canal et introspection - Meilleures pratiques de sécurité

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-nchan.