Sortir:

  1. Journaux clients :
   Connected to WebSocket server   Message from server: Hello, you sent -> Hello from client
  1. Journaux du serveur :
   Client connected   Received: Hello from client

Socket.IO : WebSockets simplifiés

Bien que les WebSockets soient puissants, ils nécessitent un travail manuel pour gérer des événements tels que les reconnexions, la diffusion et la gestion des solutions de secours (par exemple, une interrogation longue). Socket.IO simplifie la communication en temps réel en fournissant des fonctionnalités telles que :

Étape 1 : Installation de Socket.IO

npm install socket.io

Étape 2 : Création d'un serveur Socket.IO

const http = require(\\'http\\');const socketio = require(\\'socket.io\\');// Create an HTTP serverconst server = http.createServer();const io = socketio(server);io.on(\\'connection\\', (socket) => {    console.log(\\'Client connected\\');    // Listen for messages from the client    socket.on(\\'message\\', (msg) => {        console.log(\\'Received message:\\', msg);        socket.emit(\\'message\\', `Server received: ${msg}`);    });    // On client disconnect    socket.on(\\'disconnect\\', () => {        console.log(\\'Client disconnected\\');    });});server.listen(3000, () => {    console.log(\\'Socket.IO server running on http://localhost:3000\\');});

Ici:

Étape 3 : Création d'un client Socket.IO

            Socket.IO Client    

Socket.IO Example

Dans cet exemple, le client Socket.IO gère automatiquement la connexion au serveur et permet la communication bidirectionnelle.

Sortir:

  1. Journaux clients :
   Connected to server   Message from server: Server received: Hello from client
  1. Journaux du serveur :
   Client connected   Received message: Hello from client

Cas d'utilisation pour WebSockets et Socket.IO

4.1 Application de discussion en temps réel

Problème : une plate-forme de messagerie doit permettre une communication en temps réel entre les utilisateurs.

Solution : les WebSockets (ou Socket.IO) fournissent une connexion persistante basée sur les événements, permettant aux utilisateurs d'envoyer et de recevoir des messages en temps réel sans délai.

4.2 Édition collaborative de documents en temps réel

Problème : les utilisateurs collaborant sur un document doivent voir instantanément les modifications apportées par les autres.

Solution : en utilisant WebSockets, les modifications sont transmises à tous les clients en temps réel, garantissant ainsi que le document reste synchronisé entre tous les utilisateurs.

4.3 Notifications dans les applications Web

Problème : une application Web doit informer les utilisateurs d'événements tels que de nouveaux messages, mises à jour ou alertes.

Solution : les WebSockets permettent au serveur d'envoyer des notifications au client dès que des événements se produisent, améliorant ainsi l'engagement des utilisateurs.

Mise à l'échelle de WebSockets et Socket.IO

La mise à l'échelle de WebSockets et Socket.IO est difficile en raison de leur nature persistante. Chaque connexion WebSocket est une connexion TCP de longue durée, qui peut devenir gourmande en ressources à mesure que le nombre de connexions augmente.

Stratégies courantes de mise à l'échelle :

  1. Mise à l'échelle horizontale : équilibrage de charge du trafic WebSocket sur plusieurs serveurs.
  2. Sessions persistantes : garantir que toutes les connexions WebSocket d'un client sont acheminées vers le même serveur.
  3. Redis pour Pub/Sub : utilisation de Redis pour la publication d'événements et l'abonnement sur les serveurs, garantissant que tous les clients reçoivent des mises à jour en temps réel.
npm install socket.io-redis

Voici un exemple de configuration de Socket.IO pour utiliser Redis :

const io = require(\\'socket.io\\')(server);const redisAdapter = require(\\'socket.io-redis\\');io.adapter(redisAdapter({ host: \\'localhost\\', port: 6379 }));

Conclusion

WebSockets et Socket.IO sont des technologies essentielles pour la communication en temps réel dans les applications Web modernes. Alors que les WebSockets fournissent un protocole de bas niveau pour la communication en duplex intégral, Socket.IO simplifie la mise en œuvre en offrant des fonctionnalités supplémentaires telles que la reconnexion et la diffusion automatiques. Les deux technologies ont d'importantes applications dans le monde réel, des applications de chat aux outils collaboratifs.

Dans le prochain article, nous aborderons les Node.js Streams et explorerons comment ils gèrent efficacement les données volumineuses, en nous concentrant sur l'évolutivité et les performances.

","image":"http://www.luping.net/uploads/20241017/17291584876710dd57bf9e9.jpg","datePublished":"2024-11-08T16:58:22+08:00","dateModified":"2024-11-08T16:58:22+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Communication en temps réel avec WebSockets et Socket.IO dans Node.js

Communication en temps réel avec WebSockets et Socket.IO dans Node.js

Publié le 2024-11-08
Parcourir:329

Real-time communication with WebSockets and Socket.IO in Node.js

Les applications Web modernes nécessitent souvent une communication en temps réel, que ce soit pour les systèmes de chat, les mises à jour en direct, l'édition collaborative ou les notifications. La communication HTTP traditionnelle est insuffisante pour les applications en temps réel car elle repose sur des modèles requête-réponse. C'est là que les WebSockets entrent en jeu, permettant une communication en duplex intégral entre le serveur et le client.

Dans cet article, nous explorerons :

  1. Qu'est-ce que les WebSockets et pourquoi ils sont essentiels pour les applications en temps réel.
  2. Comment implémenter les WebSockets dans Node.js.
  3. Utilisation de Socket.IO pour simplifier la mise en œuvre de WebSocket.
  4. Exemples de cas d'utilisation réels.

Que sont les WebSockets ?

WebSockets est un protocole qui fournit des canaux de communication en duplex intégral sur une seule connexion TCP. Contrairement aux requêtes HTTP traditionnelles, qui sont basées sur des requêtes-réponses et nécessitent l'établissement continu de nouvelles connexions, les WebSockets permettent une communication persistante.

Principales caractéristiques :

  • Communication full-duplex : le client et le serveur peuvent envoyer des messages à tout moment sans s'attendre.
  • Latence plus faible : les WebSockets éliminent le besoin d'ouvrir et de fermer constamment les connexions, réduisant ainsi la latence et améliorant les performances des applications en temps réel.
  • Basé sur les événements : les deux côtés peuvent transmettre des données, ce qui le rend idéal pour les applications dynamiques telles que le chat, les jeux ou les notifications en temps réel.

Implémentation de WebSockets dans Node.js

Étape 1 : Installation de la bibliothèque ws WebSocket

Dans Node.js, les WebSockets ne sont pas intégrés, nous avons donc besoin d'une bibliothèque. L'une des bibliothèques WebSocket les plus populaires pour Node.js est ws.

npm install ws

Étape 2 : Création d'un serveur WebSocket

Voici un simple serveur WebSocket utilisant la bibliothèque ws :

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    console.log('Client connected');

    // Listen for messages from the client
    ws.on('message', (message) => {
        console.log('Received:', message);
        // Respond to the client
        ws.send(`Hello, you sent -> ${message}`);
    });

    // On client disconnect
    ws.on('close', () => {
        console.log('Client disconnected');
    });
});

console.log('WebSocket server running on ws://localhost:8080');

Dans cet exemple :

  • Nous créons un serveur WebSocket sur le port 8080.
  • Lorsqu'un client se connecte, l'événement de connexion se déclenche.
  • Le serveur écoute les messages du client et répond par un message de confirmation.
  • Si le client se déconnecte, nous enregistrons un message.

Étape 3 : Création d'un client WebSocket

Vous pouvez créer un client WebSocket en utilisant JavaScript dans le navigateur :



    
    
    WebSocket Client


    

WebSocket Example

  • Lorsque la connexion WebSocket s'ouvre, le client enregistre un message de réussite.
  • Un message est envoyé au serveur lorsque vous cliquez sur le bouton et la réponse du serveur est affichée.

Sortir:

  1. Journaux clients :
   Connected to WebSocket server
   Message from server: Hello, you sent -> Hello from client
  1. Journaux du serveur :
   Client connected
   Received: Hello from client

Socket.IO : WebSockets simplifiés

Bien que les WebSockets soient puissants, ils nécessitent un travail manuel pour gérer des événements tels que les reconnexions, la diffusion et la gestion des solutions de secours (par exemple, une interrogation longue). Socket.IO simplifie la communication en temps réel en fournissant des fonctionnalités telles que :

  • Reconnexion automatique.
  • Diffusion d'événements vers plusieurs clients.
  • Retour à l'interrogation si les WebSockets ne sont pas pris en charge.

Étape 1 : Installation de Socket.IO

npm install socket.io

Étape 2 : Création d'un serveur Socket.IO

const http = require('http');
const socketio = require('socket.io');

// Create an HTTP server
const server = http.createServer();
const io = socketio(server);

io.on('connection', (socket) => {
    console.log('Client connected');

    // Listen for messages from the client
    socket.on('message', (msg) => {
        console.log('Received message:', msg);
        socket.emit('message', `Server received: ${msg}`);
    });

    // On client disconnect
    socket.on('disconnect', () => {
        console.log('Client disconnected');
    });
});

server.listen(3000, () => {
    console.log('Socket.IO server running on http://localhost:3000');
});

Ici:

  • Nous créons un serveur à l'aide de Socket.IO qui écoute les connexions et les messages entrants.
  • socket.emit est utilisé pour renvoyer un message au client.

Étape 3 : Création d'un client Socket.IO



    
    
    Socket.IO Client


    

Socket.IO Example

Dans cet exemple, le client Socket.IO gère automatiquement la connexion au serveur et permet la communication bidirectionnelle.

Sortir:

  1. Journaux clients :
   Connected to server
   Message from server: Server received: Hello from client
  1. Journaux du serveur :
   Client connected
   Received message: Hello from client

Cas d'utilisation pour WebSockets et Socket.IO

4.1 Application de discussion en temps réel

Problème : une plate-forme de messagerie doit permettre une communication en temps réel entre les utilisateurs.

Solution : les WebSockets (ou Socket.IO) fournissent une connexion persistante basée sur les événements, permettant aux utilisateurs d'envoyer et de recevoir des messages en temps réel sans délai.

4.2 Édition collaborative de documents en temps réel

Problème : les utilisateurs collaborant sur un document doivent voir instantanément les modifications apportées par les autres.

Solution : en utilisant WebSockets, les modifications sont transmises à tous les clients en temps réel, garantissant ainsi que le document reste synchronisé entre tous les utilisateurs.

4.3 Notifications dans les applications Web

Problème : une application Web doit informer les utilisateurs d'événements tels que de nouveaux messages, mises à jour ou alertes.

Solution : les WebSockets permettent au serveur d'envoyer des notifications au client dès que des événements se produisent, améliorant ainsi l'engagement des utilisateurs.

Mise à l'échelle de WebSockets et Socket.IO

La mise à l'échelle de WebSockets et Socket.IO est difficile en raison de leur nature persistante. Chaque connexion WebSocket est une connexion TCP de longue durée, qui peut devenir gourmande en ressources à mesure que le nombre de connexions augmente.

Stratégies courantes de mise à l'échelle :

  1. Mise à l'échelle horizontale : équilibrage de charge du trafic WebSocket sur plusieurs serveurs.
  2. Sessions persistantes : garantir que toutes les connexions WebSocket d'un client sont acheminées vers le même serveur.
  3. Redis pour Pub/Sub : utilisation de Redis pour la publication d'événements et l'abonnement sur les serveurs, garantissant que tous les clients reçoivent des mises à jour en temps réel.
npm install socket.io-redis

Voici un exemple de configuration de Socket.IO pour utiliser Redis :

const io = require('socket.io')(server);
const redisAdapter = require('socket.io-redis');
io.adapter(redisAdapter({ host: 'localhost', port: 6379 }));

Conclusion

WebSockets et Socket.IO sont des technologies essentielles pour la communication en temps réel dans les applications Web modernes. Alors que les WebSockets fournissent un protocole de bas niveau pour la communication en duplex intégral, Socket.IO simplifie la mise en œuvre en offrant des fonctionnalités supplémentaires telles que la reconnexion et la diffusion automatiques. Les deux technologies ont d'importantes applications dans le monde réel, des applications de chat aux outils collaboratifs.

Dans le prochain article, nous aborderons les Node.js Streams et explorerons comment ils gèrent efficacement les données volumineuses, en nous concentrant sur l'évolutivité et les performances.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/imsushant12/real-time-communication-with-websockets-and-socketio-in-nodejs-4p8e?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3