Bonjour,

J'ai été faire un tour dans le paquet java.net, j'ai essayé pas mal de choses mais là j'aimerais savoir comment les autres font pour voir si je ne pourrais pas améliorer mes programmes.
Je m'explique un p'tit peu :

J'ai essayé un petit tchat en ligne avec la gestion d'un socket par client.
Lorsque mon client se connecte, du coté serveur, le ServerSocket génère son Socket et de même un objet Client. J'extrais les input/output stream du socket.
Pour envoyer des données, j'envoie un "paquet" de données qui n'est rien d'autre qu'un ByteBuffer encapsulé (l'idée m'est venue en regardant la plupart des méthodes de paquets d'un projet de MMORPG) dans une classe dépendante du type de données.
Maintenant pour lire les données, je lis les bytes 1 à 1, je garde une trace dans un tableau de 4 bytes qui sont les 4 derniers bytes que j'ai lu et je compare à une séquence de fin de paquet que j'ai défini. Le paquet est ensuite envoyé quand une queue synchronisée pour être traité.
Au final, j'ai 3 thread par client (lecture, écriture, traitement).
Ces threads se fermes à la déconnexion du Client.

Sur le principe et la pratique, ça fonctionne. (Si ça existe déjà, je n'en connais pas le nom)

Mais quand j'ai testé ceci pour l'appliquer à un serveur HTTP (port 80), je me suis rendu compte qu'un Client n'était plus lié à un seul socket car la page ne se charge qu'à la fermeture du socket.
J'ai regardé les informations envoyées par le client (le navigateur en d'autres termes) et je n'ai rien trouvé à propos des cookies où autres choses que Apache utilise.
Ici, on as un thread d'écoute, et un par client connecté simultanément.

C'est donc qu'il y a bien d'autres manière de voir un service.
Auriez vous quelques documentations sur ces façons de faire ?
J'aimerais les comparer pour voir se qui serais plus adapté à mes besoins.