Introduction : Pourquoi WebSocket est devenu le standard des communications temps réel
Les applications web modernes nécessitent une réaction instantanée aux événements. Qu'il s'agisse d'un chat, d'un terminal boursier ou d'un jeu multijoueur, les utilisateurs s'attendent à ce que les données soient mises à jour sans rechargement de la page. Le HTTP traditionnel (API REST) avec son modèle "requête-réponse" est inefficace pour de telles tâches : le client est obligé d'interroger constamment le serveur (polling), ce qui crée une charge inutile et des délais.
La solution à ce problème est le protocole WebSocket, qui établit une connexion bidirectionnelle permanente entre le client et le serveur. Dans cet article, nous allons explorer WebSocket en Java des bases à la création d'une application temps réel complète. Vous apprendrez à configurer le serveur, à écrire le client et à gérer les erreurs.
Fondamentaux de WebSocket : comment ça fonctionne
Différence avec HTTP
WebSocket est un protocole fonctionnant au-dessus de TCP. Il commence comme une requête HTTP (poignée de main), après quoi la connexion est "mise à niveau" (upgrade) vers un canal bidirectionnel permanent. Contrairement à HTTP, où chaque requête nécessite une nouvelle connexion, WebSocket la maintient ouverte, permettant au serveur d'envoyer des données au client de manière autonome (modèle push).
Principaux avantages :
- Faible latence — les données sont transmises instantanément sans nouvelles poignées de main.
- Moins de trafic — en-tête minimal (seulement 2-14 octets) contre des centaines d'octets en HTTP.
- Bidirectionnalité — le client et le serveur peuvent tous deux initier l'envoi de données.
Architecture d'une application temps réel en Java
Une application typique se compose de trois composants :
- Client (navigateur ou application mobile) qui initie la connexion.
- Serveur d'applications (Java) qui gère les sessions WebSocket.
- Backend (base de données, files de messages) qui traite la logique métier.
Java fournit des outils puissants pour travailler avec WebSocket — tant côté serveur (Jakarta WebSocket, Spring WebSocket) que côté client (API Java WebSocket standard).
Création d'un serveur WebSocket en Java
Préparation de l'environnement
Pour la partie serveur, nous utiliserons Jakarta WebSocket (anciennement Java EE WebSocket). C'est une API standard qui fait partie de Jakarta EE. Vous aurez besoin de :
- JDK 11 ou supérieur.
- Serveur d'applications (par exemple, Apache Tomcat 10 ou GlassFish 7).
- Maven pour la gestion des dépendances.
Ajoutez la dépendance dans pom.xml :
<dependency> <groupId>jakarta.websocket</groupId> <artifactId>jakarta.websocket-api</artifactId> <version>2.1.0</version> <scope>provided</scope></dependency>Écriture d'un endpoint WebSocket
Créons un simple serveur d'écho qui renvoie le message reçu :
import jakarta.websocket.*;import jakarta.websocket.server.ServerEndpoint;
@ServerEndpoint("/chat")public class ChatEndpoint {
@OnOpen public void onOpen(Session session) { System.out.println("Nouvelle connexion : " + session.getId()); }
@OnMessage public String onMessage(String message, Session session) { System.out.println("Reçu de " + session.getId() + " : " + message); return "Écho : " + message; }
@OnClose public void onClose(Session session, CloseReason reason) { System.out.println("Connexion fermée : " + session.getId() + " pour la raison : " + reason.getReasonPhrase()); }
@OnError public void onError(Session session, Throwable error) { System.err.println("Erreur dans la session " + session.getId() + " : " + error.getMessage()); }}L'annotation @ServerEndpoint("/chat")
Blogs
Book Recommendations
Lire aussi
Rust dans les projets réels : 5 cas d'entreprises qui sont passées à Rust
Programmation fonctionnelle en PHP : de A à Z — guide complet
Comment devenir développeur Kotlin : conseils et CV pour débutants
Réflexion et introspection en TypeScript : comment le code se regarde lui-même
Revue de code en TypeScript : quoi vérifier et comment donner un retour