WebSocket est un protocole de communication complet basé sur TCP qui permet aux connexions persistantes entre les clients et les serveurs de réaliser une transmission bidirectionnelle de données en temps réel. Par rapport à un sondage HTTP traditionnel, WebSocket a une efficacité plus élevée et une latence plus faible dans des scénarios tels que la communication instantanée et la poussée en temps réel.
Dans le déploiement réel, nous devons souvent utiliser Nginx comme serveur proxy frontal pour gérer l'équilibrage de charge, le contrôle d'accès sécurisé, le transfert de chemin et d'autres fonctions. Afin de prendre en charge le protocole WebSocket, une configuration supplémentaire de Nginx est requise pour garantir que la connexion peut être livrée au service backend de manière stable et en continu.
Tout d'abord, assurez-vous que Nginx est installé sur votre serveur. Il peut être installé via l'outil de gestion des packages:
sudo apt install nginx # system debian / ubuntu sudo yum install nginx # centos système
Une fois l'installation terminée, vous pouvez utiliser nginx -v pour afficher la version pour vous assurer que l'installation est réussie.
Ensuite, vous devez modifier le fichier de configuration Nginx, généralement le fichier de configuration dans /etc/nginx/nginx.conf ou un site compatible .
map $ http_upgrade $ connection_upgrade { mise à niveau par défaut; '' fermer; } Backend en amont { serveur 127.0.0.1:8080; }
Le but de cette configuration est de configurer un mappage pour l'en-tête de mise à niveau de la connexion WebSocket et de spécifier l'adresse de l'application Backend.
Emplacement / WebSocket { proxy_pass http: // backend; proxy_http_version 1.1; Proxy_set_header mise à niveau $ http_upgrade; proxy_set_header connection $ connection_upgrade; }
Cette configuration transfère les demandes d'accès au chemin d'accès / WebSocket vers le backend et comporte les informations d'en-tête nécessaires pour permettre la fin du processus de poignée de main WebSocket.
Une fois la configuration terminée, exécutez la commande suivante pour redémarrer le service Nginx:
service sudo nginx redémarrer
Si la configuration est correcte, Nginx prendra en charge le transfert de connexions WebSocket.
Vous pouvez tester si le WebSocket est connecté avec succès via un navigateur ou un autre outil client. Voici un exemple JavaScript de base:
var ws = new WebSocket ("ws: // your_domain / Websocket"); ws.onopen = function () { console.log ("connecté à WebSocket"); }; ws.onMessage = fonction (événement) { console.log ("Message reçu:" + event.data); }; ws.Onclose = function () { console.log ("déconnecté de WebSocket"); };
Incorporez le code ci-dessus dans HTML, et après l'avoir ouvert dans le navigateur, observez simplement si la console peut afficher l'état de la connexion.
En configurant Nginx Proxy WebSocket, nous pouvons obtenir une prise en charge de communication en temps réel stable à haute performance. Nginx lui-même ne gère pas la logique WebSocket et n'est responsable que du transfert des connexions et des en-têtes liés au protocole de traitement. Le backend doit encore avoir des capacités de service WebSocket. Lors du déploiement des applications Web modernes, la combinaison des fonctions proxy de Nginx et des services WebSocket back-end est un choix idéal pour l'interaction de données en temps réel.