Skip to content

L'objectif de cette série d'exercices est d'apprendre à concevoir et développer une application en utilisant des technologies de Streaming HTTP (WebSocket et Server-Sent Event). L'implémentation sera réalisée en utilisant le langage Java et les bibliothèques JAX-RS et Tyrus.

Notifications You must be signed in to change notification settings

mickaelbaron/streaminghttp-tutorial

Repository files navigation

Tutoriel Streaming HTTP (WebSocket et Server-Sent Event)

L'objectif de cette série d'exercices est d'apprendre à concevoir et développer une application en utilisant des technologies de Streaming HTTP.

Nous utiliserons pour cela plusieurs technologies :

  • WebSocket pour la communication bidirectionnelle entre la couche cliente et la couche serveur ;
  • Server-Sent Event (SSE) pour la communication monodirectionelle entre la couche serveur et la couche cliente ;
  • Service web REST pour une communication de la couche cliente vers la couche serveur.

Nous utiliserons le langage Java et les bibliothèques Tyrus pour le développement des WebSocket et JAX-RS pour le développeur de Server-Sent Event.

Une grande partie du code vous sera donnée comme support dans le répertoire workspace. En effet, ces exercices se focaliseront principalement sur les problématiques de manipulation des bibliothèques de Streaming HTTP.

Buts pédagogiques : identifier la communication de Streaming HTTP adaptée à un besoin, utiliser la bibliothèque Tyrus pour implémenter un client WebSocket, utiliser la bibliothèque JAX-RS et son module SSE pour implémenter un SSE, débogguer un SSE avec cURL.

Ce dépôt est utilisé dans le cadre d'un cours sur les architectures orientées services que je dispense à l'ISAE-ENSMA et à l'Université de Poitiers en français. Tous les supports de cours et tutoriaux sont disponibles sur mon blog personnel : https://mickael-baron.fr/soa/.

Prérequis logiciels

Avant de démarrer cette série d'exercices, veuillez préparer votre environnement de développement en installant les outils suivants :

Présentation de l'étude de cas

L'étude de cas utilisée est une application appelée « Spell What Royal ». C'est une application de type jeu dont l'objectif est de deviner un texte à partir d'une image. Une image est ainsi présentée au joueur et celui-ci doit saisir, dans un temps donné, un texte. Si le texte correspond à la valeur demandée, le joueur marque un point.

« Spell What Royal » est un jeu qui peut être joué à plusieurs dans un mode « Battle Royal » (d'où l'utilisation du mot « Royal » dans le titre). Un joueur se connecte à une partie en cours, marqe des points et compare ses points par rapport à une liste des joueurs connectés après chaque manche. Le jeu est en continu, c'est-à-dire qu'il ne s'arrêtera jamais. Un joueur peut intégrer une partie en cours. Si le joueur quitte une partie, ses points seront perdus et le joueur n'apparaîtra plus dans la liste des joueurs.

Logo de Spell What Royal

« Spell What Royal » est une application client/serveur. Le rôle du serveur est de centraliser les connexions des joueurs et de gérer les différentes étapes d'une partie. Une instance d'un serveur gère une seule partie. Le client fournit les interfaces graphiques pour le joueur. Plus précisément, une application de type client lourd a été développée avec le langage Java et la boîte à outils Swing.

Nous montrons ci-dessous, les différentes interfaces graphiques auxquelles le joueur aura à manipuler.

  • Interface graphique de connexion pour s'enregistrer sur une partie en cours.

Interface graphique de connexion d'un joueur

  • Interface graphique de mise en attente avant le lancement d'une manche d'identification d'une image.

Interface graphique de mise en attente

  • Interface graphique du jeu pour l'identification d'une image. La proposition du joueur est donnée dans le champ Give your proposition. Une indication pour faciliter la recherche du texte est donnée dans le champ Help. Plusieurs autres informations sont renseignées pour donner l'état actuel de la partie à savoir :
    • le nom du joueur dans le champ Name ;
    • le score du joueur dans le champ Score ;
    • le champ Found pour avertir le joueur d'une bonne ou mauvaise réponse (dynamique à chaque saisie de l'utilisateur) ;
    • le champ Others pour indiquer le nombre de joueur ayant trouvé la bonne réponse ;
    • le champ Timer pour retourner la valeur du chronomètre.

Interface graphique du jeu pour l'identification d'une image

  • Interface graphique du résultat d'une manche et des scores de tous les joueurs. L'image est visible ainsi que le texte à deviner (champ solution).
    • Pour le joueur courant (zone You), il est rappelé la valeur qu'il a donnée (champ value). Il est aussi indiqué si le joueur a trouvé (champ Found) et son score actuel (champ Score).
    • Pour tous les joueurs (zone Other Players), il est listé le nom, la valeur proposée et le score.

Interface graphique du résultat d'une manche et des scores de tous les joueurs

Ressources

Retrouver les autres tutoriels :

Pour aller plus loin, vous pouvez consulter les ressources suivantes :

About

L'objectif de cette série d'exercices est d'apprendre à concevoir et développer une application en utilisant des technologies de Streaming HTTP (WebSocket et Server-Sent Event). L'implémentation sera réalisée en utilisant le langage Java et les bibliothèques JAX-RS et Tyrus.

Topics

Resources

Stars

Watchers

Forks

Languages