J'ai joué avec les nouvelles fonctions asynchrones de Servlet 3.0 avec Tomcat 7.0.4. J'ai trouvé ce Chat Application, qui permet aux clients de se bloquer sur une requête GET pour obtenir des mises à jour de messages. Cela fonctionne très bien quand il s'agit de recevoir les messages. Le problème survient lorsque le client est déconnecté, c'est-à-dire que l'utilisateur ferme le navigateur. Il semble que le serveur n'augmente pas IOException
, même si le client s'est déconnecté. Le fil de message (voir le code source du lien ci-dessus) écrit heureusement à tous les flux de sortie AsyncContext
stockés.Comment savoir si le client a fermé la connexion
Est-ce un bug de Tomcat? ou est-ce que je manque quelque chose ici? Si ce n'est pas un bug, alors comment dois-je détecter si le client a fermé la connexion?
Eh bien cela prendrait soin si l'opération d'écriture augmenterait l'IOException qui ne se produit pas. Ainsi, vous pouvez fermer le navigateur et ne jamais obtenir cette exception. Et le timeout est dans cet exemple 10 minutes. C'est beaucoup si vous avez laissé dire des centaines de clients. – SS3
J'ai essayé le code avec Glassfish v3 et il semble que je puisse obtenir l'événement onError avec Firefox, mais avec IE cela ne fonctionnera pas. C'est vraiment bizarre. – SS3
@ SS3: Alors, pouvons-nous dire que vous n'avez aucun problème avec Firefox? –