WebSocket en Java : applications temps réel de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 :

  1. Client (navigateur ou application mobile) qui initie la connexion.
  2. Serveur d'applications (Java) qui gère les sessions WebSocket.
  3. 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