Skip to content

PhilippeRenevierGonin/ExempleSocketIOClientServeurJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ExempleSocketIOClientServeurJava

pour les cours de projets en Licence, exemple de client serveur Note : le serveur étant vexé quand on trouve le résultat, il se contente de se (ren)fermer :-)

Les différentes étapes :

  • branche master : version non testée, juste pour illuster la relation client-serveur
    • tag étape1 : handshake, un serveur est lancé, un client ce connecte et c'est fini le client et le serveur écoute des évènements spéciaux : connexion, déconnexion il y a deux projets java : serveur et client
    • tag étape2 : après connexion du client, le serveur envoie une question au client (sans param), le client répond (42), et c'est fini Le serveur reçoit un Integer (conversion automatique par SocketIO-Server)
    • tag étape3 : une boucle est installée pour que le client réponde tant qu'il n'a pas trouvé Le serveur envoie un paramètre avec la question : un boolean, le client reçoit un boolean (et non pas un JSON) Si le client répond n'importe quoi, cela peut boucler indéfiniment.
    • tag étape3.5 : le client, après connexion, envoie une identification (nom, niveau). Seulement après le serveur envoie la 1re question le client envoie un JSON, le serveur exploite une Identification, certaine conversion se font sur la base de l'introspection : analyse des propriétés (getter/setter)
    • tag étape4 : le serveur renvoie en plus de l'indication plus grand (true) ou plus petit (false), il renvoie aussi une liste de tous les coups déjà joué. La liste est transformée en tableau JSON, le client doit refaire la liste. C'est illustré, mais non utilisé
    • tag étape5 : réorganisation du code pour factoriser le code commun : ** il n'y a plus qu'un seul projet maven avec 3 modules** il faut utiliser mvn install
    • tag étape5.1 : un lanceur (nouveau module) est ajouté pour exécuter en même temps le client et le serveur un peu de javadoc est ajouté (pom.xml parent et classe Coup) (utilisation avec mvn site)
  • branche android
  • branche test
    • il y a tout d'abord un refactoring en 3 temps (isolation de la connexion avec le serveur, puis isolation des sorties textuelles)
    • il y a la configuration pour JUnit 5 dans le pom.xml
    • il y a quelques tests, d'un coup, y compris un test paramétré (ajout d'une dépendence dans le pom.xml)
    • Ensuite, une restructuration du serveur est entamé pour séparer connexion et moteur de jeu
  • branche travis-docker
    • les derniers commit illustrent le branchement à Travis-ci et l'utilisation de docker sur la partie "moteur de jeu"
  • branche autreExemple : un début de développement (sans test) sur le jeu 7Wonders

les dépendences maven côté serveur :

<dependencies>
	<dependency>
     		 <groupId>com.corundumstudio.socketio</groupId>
     		 <artifactId>netty-socketio</artifactId>
     		 <version>1.7.17</version>
  	</dependency>
	<dependency>
		<groupId>io.netty</groupId>
		<artifactId>netty-transport</artifactId>
		<version>4.1.32.Final</version>
	</dependency>
  	<dependency>
     		 <groupId>org.slf4j</groupId>
     		 <artifactId>slf4j-simple</artifactId>
     		 <version>1.7.25</version>
  	</dependency> 
</dependencies>

les dépendences maven côté client

<dependency> 
    <groupId>io.socket</groupId>
    <artifactId>socket.io-client</artifactId>
    <version>1.0.0</version>
</dependency>   

About

pour les cours de projets en Licence, exemple de client serveur

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages