Maison > Article > interface Web > Travailler avec WebSocket et la communication en temps réel dans Node.js
Dans les applications modernes, la communication en temps réel est cruciale, en particulier pour des fonctionnalités telles que le chat en direct, les notifications et les outils collaboratifs. WebSocket est un protocole permettant une communication bidirectionnelle entre le client et le serveur via une connexion unique et de longue durée. Cet article couvre WebSocket, son implémentation dans Node.js et le rôle de Socket.IO, une bibliothèque populaire qui simplifie l'utilisation de WebSocket dans les applications en temps réel.
WebSocket est un protocole qui maintient une connexion persistante, permettant l'échange de données sans le cycle demande-réponse constant de HTTP. Certains cas d'utilisation incluent :
Créons un serveur WebSocket simple à l'aide du package ws.
Étape 1 : Installer ws :
npm install ws
Étape 2 : Créer un serveur WebSocket :
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
Étape 3 : Connexion côté client :
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
Socket.IO est une bibliothèque qui simplifie la communication en temps réel et ajoute des fonctionnalités telles que la reconnexion et la diffusion automatiques.
npm install socket.io
Implémentation côté serveur :
const express = require('express'); const http = require('http'); const { Server } = require('socket.io'); const app = express(); const server = http.createServer(app); const io = new Server(server); io.on('connection', (socket) => { console.log('A user connected'); socket.on('chat message', (msg) => { // Broadcast message to all connected clients io.emit('chat message', msg); }); socket.on('disconnect', () => { console.log('User disconnected'); }); }); server.listen(3000, () => { console.log('Server is listening on http://localhost:3000'); });
Mise en œuvre côté client :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Real-Time Chat</title> </head> <body> <h1>Chat Room</h1> <input> <h2> Node.js Streams: Efficient Data Handling </h2> <p>Node.js streams provide a way to process data piece by piece, which is particularly useful for handling large files.</p> <h3> Types of Streams </h3> <ol> <li> <strong>Readable</strong>: For reading data from a source.</li> <li> <strong>Writable</strong>: For writing data to a destination.</li> <li> <strong>Duplex</strong>: For both reading and writing.</li> <li> <strong>Transform</strong>: For modifying or transforming data as it’s read or written.</li> </ol> <h3> Example: Reading a Large File with Streams </h3> <pre class="brush:php;toolbar:false">const fs = require('fs'); const readStream = fs.createReadStream('largefile.txt', { encoding: 'utf8' }); readStream.on('data', (chunk) => { console.log('New chunk received:', chunk); }); readStream.on('end', () => { console.log('File reading completed'); });
La mise à l'échelle d'une application Node.js garantit qu'elle peut gérer des charges accrues en ajoutant plus de ressources.
NGINX est un serveur Web souvent utilisé pour l'équilibrage de charge, la mise en cache et la diffusion de contenu statique.
npm install ws
Modifier /etc/nginx/sites-available/default :
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connected'); // Listening for messages from the client socket.on('message', (message) => { console.log(`Received message: ${message}`); // Echo message back to client socket.send(`Server: ${message}`); }); // Handling connection close socket.on('close', () => { console.log('Client disconnected'); }); }); console.log('WebSocket server is running on ws://localhost:8080');
<script> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = () => { console.log('Connected to server'); socket.send('Hello Server!'); }; socket.onmessage = (event) => { console.log(`Received from server: ${event.data}`); }; </script>
SSL crypte les données entre le client et le serveur, ajoutant une couche de sécurité. Pour configurer SSL :
npm install socket.io
Cet article a exploré les éléments essentiels de la communication en temps réel, de la gestion efficace des données, de la mise à l'échelle et de la sécurisation d'une application Node.js pour un déploiement au niveau de la production. Les flux WebSockets, Socket.IO, NGINX et Node.js sont des outils puissants qui améliorent l'interactivité des applications, la gestion des données et la sécurité pour une meilleure expérience utilisateur et une meilleure évolutivité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!