Les WebSockets sont un protocole de communication bidirectionnelle qui permet une interaction en temps réel entre un client (généralement un navigateur web) et un serveur. Contrairement aux requêtes HTTP traditionnelles qui sont unidirectionnelles (le client envoie une requête, le serveur répond), les WebSockets permettent une connexion persistante où les deux parties peuvent envoyer des messages à tout moment.
Voici un aperçu de leur fonctionnement :
Upgrade: websocket
.La connexion peut être fermée par l’une ou l’autre des parties en envoyant un frame de fermeture (close frame). Une fois la fermeture initiée, l’autre partie doit répondre avec un frame de fermeture pour terminer proprement la connexion.
const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', (socket) => { console.log('Client connecté'); socket.on('message', (message) => { console.log('Message reçu : ', message); socket.send('Bonjour client!'); }); socket.on('close', () => { console.log('Connexion fermée'); }); socket.on('error', (error) => { console.log('Erreur : ', error); }); });
const socket = new WebSocket('ws://example.com/socket'); // Événements de connexion socket.onopen = (event) => { console.log('Connexion ouverte'); socket.send('Bonjour serveur!'); }; // Réception des messages socket.onmessage = (event) => { console.log('Message reçu : ', event.data); }; // Fermeture de la connexion socket.onclose = (event) => { console.log('Connexion fermée : ', event); }; // Gestion des erreurs socket.onerror = (error) => { console.log('Erreur : ', error); };
Les WebSockets sont particulièrement utiles dans les applications nécessitant une interaction en temps réel et une faible latence, rendant l’expérience utilisateur plus fluide et interactive.
#include// Utilisez pour ESP8266 #include #include // Remplacez par vos informations de réseau const char* ssid = "votre_SSID"; const char* password = "votre_mot_de_passe"; // Créez un objet serveur web asynchrone sur le port 80 AsyncWebServer server(80); // Créez un objet WebSocket sur le chemin "/ws" AsyncWebSocket ws("/ws"); // Gestion des événements WebSocket void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len) { if (type == WS_EVT_CONNECT) { Serial.println("Client connecté"); client->text("Bienvenue au WebSocket server!"); } else if (type == WS_EVT_DISCONNECT) { Serial.println("Client déconnecté"); } else if (type == WS_EVT_DATA) { Serial.println("Message reçu"); client->text("Message reçu"); } } void setup() { // Initialisez la communication série pour le débogage Serial.begin(115200); // Connectez-vous au Wi-Fi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connexion au Wi-Fi..."); } Serial.println("Connecté au Wi-Fi!"); // Définir la fonction de gestion des événements WebSocket ws.onEvent(onWsEvent); // Ajouter le gestionnaire WebSocket au serveur server.addHandler(&ws); // Démarrez le serveur server.begin(); } void loop() { // Rien à faire dans la boucle principale }
AsyncWebServer server(80);
: Crée un serveur web asynchrone sur le port 80.AsyncWebSocket ws("/ws");
: Crée un WebSocket sur le chemin /ws
.onWsEvent
est une fonction qui gère les événements WebSocket tels que la connexion, la déconnexion et la réception de messages.Les WebSockets sont puissants pour les applications nécessitant une communication instantanée et bidirectionnelle entre le client et le serveur, offrant une expérience utilisateur plus fluide et réactive.
Domotique – informatique – électronique – dictionnaire – projets
Copyright 2024