push-stream: module de flux push NGINX
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-push-stream
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-push-stream
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ngx_http_push_stream_module.so;
Ce document décrit nginx-module-push-stream v0.6.0 publié le 09 mai 2024.
Une technologie de push HTTP en flux pur pour votre configuration Nginx.
Comet rendue facile et vraiment évolutive.
Prend en charge EventSource, WebSocket, Long Polling, et Forever Iframe. Voir quelques exemples ci-dessous.
_Ce module n'est pas distribué avec la source de Nginx. Voir les instructions d'installation
Disponible sur github à nginx_push_stream_module
Changelog
Consultez toujours CHANGELOG.textile pour voir les nouveautés.
Contribuer
Après avoir essayé ce module et l'avoir apprécié, n'hésitez pas à donner quelque chose
en retour,
et à aider à la maintenance du projet ;)

Configuration de base
# ajoutez le push_stream_shared_memory_size à votre contexte http
http {
push_stream_shared_memory_size 32M;
# définissez les points de terminaison de l'éditeur et de l'abonné dans votre contexte serveur
server {
location /channels-stats {
# activez le mode statistiques des canaux pour cet emplacement
push_stream_channels_statistics;
# identifiant de canal basé sur la chaîne de requête
push_stream_channels_path $arg_id;
}
location /pub {
# activez le mode éditeur (admin) pour cet emplacement
push_stream_publisher admin;
# identifiant de canal basé sur la chaîne de requête
push_stream_channels_path $arg_id;
}
location ~ /sub/(.*) {
# activez le mode abonné (streaming) pour cet emplacement
push_stream_subscriber;
# chemin de canal positionnel
push_stream_channels_path $1;
}
}
}
Utilisation de base
Vous pouvez ressentir l'ambiance dès maintenant à la ligne de commande. Essayez d'utiliser plus de
un terminal et commencez à jouer avec http pubsub :
# Subs
curl -s -v --no-buffer 'http://localhost/sub/my_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_2'
# Pubs
curl -s -v -X POST 'http://localhost/pub?id=my_channel_1' -d 'Hello World!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_1' -d 'Hi everybody!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_2' -d 'Goodbye!'
# Statistiques des canaux pour l'éditeur (format json)
curl -s -v 'http://localhost/pub?id=my_channel_1'
# Toutes les statistiques des canaux résumées (format json)
curl -s -v 'http://localhost/channels-stats'
# Toutes les statistiques des canaux détaillées (format json)
curl -s -v 'http://localhost/channels-stats?id=ALL'
# Statistiques des canaux détaillées avec préfixe (format json)
curl -s -v 'http://localhost/channels-stats?id=your_channel_*'
# Statistiques des canaux (format json)
curl -s -v 'http://localhost/channels-stats?id=my_channel_1'
# Supprimer les canaux
curl -s -v -X DELETE 'http://localhost/pub?id=my_channel_1'
Quelques exemples
- Exemples Curl
- Forever (caché) iFrame
- Event Source
- WebSocket
- Long Polling
- JSONP
- M-JPEG
- Autres exemples
FAQ
Des doutes ?! Consultez la FAQ.
Rapport de bug
Pour signaler un bug, veuillez fournir les informations suivantes lorsque c'est applicable :
- Quelle version du module push stream est utilisée (commit sha1) ?
- Quelle version de nginx est utilisée ?
- Configuration de Nginx en cours d'utilisation
- Sortie de la commande “nginx -V”
- Dump de noyau indiquant un échec dans le code du module. Consultez ici comment en produire un.
- Description étape par étape pour reproduire l'erreur.
Qui utilise le module ?
Utilisez-vous ce module ? Ajoutez votre nom à la liste.
Client Javascript
Il existe une implémentation de client javascript ici, qui est indépendante du framework. Essayez et aidez à l'améliorer. ;)
Directives
(1) Définir les emplacements, (2) Configuration principale, (3) Configuration des abonnés, (4) Configuration des éditeurs, (5) Configuration des statistiques des canaux, (6) Configuration WebSocket
Utilisation de la mémoire
Juste pour information, la quantité minimale de mémoire utilisée pour chaque objet est listée ci-dessous :
- message sur partagé = 200 octets
- canal sur partagé = 270 octets
- abonné
sur partagé = 160 octets
sur système = 6550 octets
Tests
Les tests du serveur pour ce module sont écrits en Ruby et sont des tests d'acceptation, cliquez ici pour plus de détails.
Discussion
Groupe de discussion sur le module Push Stream Nginx Discussion Group
Contributeurs
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-push-stream.