Bibliothèque WebSocket Java : Tyrus — implémentation JSR 356 pour le temps réel

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

Bibliothèque WebSocket Java : Tyrus — implémentation de référence JSR 356



Dans le développement web moderne, le besoin de communication bidirectionnelle en temps réel est devenu une norme. Applications de chat, jeux en ligne, terminaux de trading et systèmes de notification — tous nécessitent que le serveur puisse initier l'envoi de données au client sans requêtes HTTP constantes. Pour l'écosystème Java, la spécification de facto est JSR 356 (Java API for WebSocket), et son implémentation de référence est la bibliothèque Tyrus.



Sur la page pythonlib.ru, nous examinons souvent les outils de communication en temps réel. Aujourd'hui, nous allons détailler Tyrus — une bibliothèque puissante et flexible pour travailler avec WebSocket en Java, qui permet d'intégrer facilement un échange de données bidirectionnel dans vos projets.



Qu'est-ce que Tyrus et pourquoi en a-t-on besoin ?



Tyrus est une implémentation open source (reference implementation) de la spécification JSR 356, développée sous l'égide de la Eclipse Foundation. Elle fournit un ensemble complet d'API pour créer des applications WebSocket côté serveur et client en Java. Les principaux avantages de Tyrus :



  • Conformité totale à la norme JSR 356 — le code écrit avec Tyrus sera facilement portable vers d'autres implémentations (par exemple, Apache Tomcat, Jetty).
  • Prise en charge des annotations — approche minimaliste : il suffit d'ajouter les annotations @ServerEndpoint ou @ClientEndpoint à un POJO.
  • Flexibilité — fonctionne aussi bien dans les conteneurs de servlets (Tomcat, GlassFish) qu'en mode autonome (serveur intégré Grizzly).
  • Sécurité — prise en charge de WSS (WebSocket Secure) via les sockets SSL Java standard.


Installation et intégration de Tyrus



Pour travailler avec Tyrus, vous devrez ajouter plusieurs dépendances dans pom.xml (Maven). La configuration de base inclut le noyau de la bibliothèque et la couche de transport (Grizzly pour le mode autonome) :



<!-- Dépendance principale Tyrus --><dependency>    <groupId>org.glassfish.tyrus</groupId>    <artifactId>tyrus-server</artifactId>    <version>1.19</version></dependency>

<!-- Serveur intégré Grizzly pour le mode autonome --><dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-container-grizzly-server</artifactId> <version>1.19</version></dependency>

<!-- Partie client (si besoin de se connecter à d'autres serveurs) --><dependency> <groupId>org.glassfish.tyrus</groupId> <artifactId>tyrus-client</artifactId> <version>1.19</version></dependency>


Pour Gradle (build.gradle) :



implementation 'org.glassfish.tyrus:tyrus-server:1.19'implementation 'org.glassfish.tyrus:tyrus-container-grizzly-server:1.19'implementation 'org.glassfish.tyrus:tyrus-client:1.19'


Création d'un serveur WebSocket avec Tyrus



La partie serveur est une classe Java ordinaire avec l'annotation @ServerEndpoint. Tyrus gère automatiquement le cycle de vie de la connexion.



import javax.websocket.*;import javax.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;

@ServerEndpoint("/chat")public class ChatEndpoint {

// Stocke toutes les sessions actives private static final Set<Session> sessions = new CopyOnWriteArraySet<>();

@OnOpen public void onOpen(Session session) { sessions.add(session); System.out.println("Nouvelle connexion : " + session.getId()); broadcast("L'utilisateur " + session.getId() + " a rejoint le chat."); }

@OnMessage public void

Recommendations