@Tcharl : même au niveau pro, il peut être intéressant de créer un serveur avec une gestion "bas niveau" des sockets, si les flux de données n'ont strictement rien à voir avec le protocole HTTP, ou autre protocole connus ( je dis ça, car c'est ce qu'on fait dans notre boite ^^ )
@Battant : Par contre, l'investissement est colossal, et utiliser des socket nécessite d'être absolument sur de ne pas réinventer la roue.
Si vraiment tu dois passer par là, alors tu ne dois pas utiliser de mutliple thread !
Ceci est donc à bannir :
Thread serviceThread = new Thread (new ServiceThread() );
Pour ça, oublies les Socket et ServerSocket. Utilise plutôt les classes comme SocketChannel, ServerSocketChannel et Selector. Fait une recherche avec les mots clef "java nio socket" sur ton moteur de recherche préféré 
Avec ça, toute la partie communication réseau peut être géré par un seul et unique Thread.
Il faut alors traiter les différentes opérations ( Connexion / Déconnexion / Récéption de packet ) comme des évènements. C'est là qu'il faut utiliser un pool de Thread ( en utilisant la classe "Executors").
Nombre de thread limité + programmation évènementielle = application réactive.
Ce terme de "application réactive" n'a strictement rien de nouveau. C'est même par là que la programmation a commencé ! Elle est juste tombé en désuétude sur les serveurs web, car le protocole HTTP n'a jamais vraiment été adapté pour le traitement de flux. D'où l'intérêt des WebSocket, qui apporte enfin la possibilité de récupérer sur le client web un évènement provenant du coté serveur.
Partager