Git Product home page Git Product logo

mickaelbaron / streaminghttp-tutorial Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 1.0 2.93 MB

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.

Java 100.00%
java microprofile websocket server-sent-event rest tyrus jaxrs

streaminghttp-tutorial's Introduction

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 :

streaminghttp-tutorial's People

Contributors

dependabot[bot] avatar mickaelbaron avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.