Giter Site home page Giter Site logo

simplechat's Introduction

SimpleChat

SimpleChat est un ensemble de 2 applications permettant de déployer un serveur de chat et un client en Java.

Besoins fonctionnels

L'application doit respecter les besoins suivants :

  • Les utilisateurs doivent pouvoir se connecter sur le serveur de chat en même temps
  • Un utilisateur doit pouvoir créer une chatroom
  • Un utilisateur NE doit PAS pouvoir créer une nouvelle chatroom ayant le même nom qu'une chatroom déjà existante
  • Les utilisateurs doivent pouvoir se connecter à une chatroom simultanément
  • Les utilisateurs doivent recevoir en temps réel les nouvelles chatroom créées
  • Un utilisateur doit pouvoir envoyer un nouveau message sur une chatroom
  • Un utilisateur doit recevoir en temps réel les nouveaux messages envoyés dans une chatroom
  • Le status des utilisateurs doit être mis à jour en temps réel dans le chat (actif / déconnecté)

Contraintes techniques

  • Chaque message doit avoir un ID unique sur la plateforme
  • Chaque nom de chatroom doit être unique
  • Un utilisateur est identifié par son username

Manuel utilisateur

Le projet SimpleChat utilise un build multi-projet Gradle. Le répertoire est composé de 3 projets :

  • Un projet server contennant le service du serveur.
  • Un projet clients/console contenant le service d'un client lourd en Java.
  • Un projet common contenant le code source partagé par ces 2 services.

Le serveur utilise 2 ports :

  • Un port exposant des web services pour les requêtes du client
  • Un port ouvrant une socket avec les clients pour gérer les notifications

Le client se connecte donc à ces 2 ports également.

En effet, certains événements demandent un synchronisation entre le serveur et le client :

  • Le serveur notifie le client (par la websocket) lors de la création d'une chatroom, d'un message ou lors du changement d'état d'un utilisateur
  • Le client se connecte sur le serveur régulièrement (web service de login) pour notifier que l'utilisateur est toujours actif

Dépendences du serveur

Le serveur utilise le micro framework Spark Java pour ouvrir les webservices.

Dépendences du client

Le client utilise le framework Lanterna pour créer une interface utilisateur sur la console.

Les appels aux web services sont réalisés à travers l'API Fluent de la librairie Apache HTTP Components.

Déployer le serveur en local

gradlew :server:run --args="<port Socket> <port web services>"

Exemple:

gradlew :server:run --args="1234 2345"

Arrêter le serveur

CTRL + c

Déployer le client en local

`gradlew :clients:console:run --args=" "

Exemple:

gradlew :clients:console:run --args="127.0.0.1 1234 2345"

Références

Test framework for Specifications

Spock framework

UI library for the client app

Lanterna

Web server for the server app

Spark Java

simplechat's People

Contributors

aitlaadm 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.