Ai-je besoin de dire à Apache Tomcat pour garder une connexion Websocket ouvrir?
Je suis en train de la Apache Tomcat Websocket Mise En Œuvre. Le Problème, c'est que la connexion se fait toujours fermé après au plus 30 secondes d'inactivité.
Dois-je configurer Tomcat pour qu'il effectue la connexion ouverte?
Si oui, comment puis-je le faire?
J'ai essayé de mettre en place le connectionTimeout dans le Connecteur de l'élément de la server.xml pour le protocole HTTP. Qui n'avait aucun effet, mais je ne sais pas si ça ne marche pas parce que je n'ai pas d'ajuster le protocole de l'attribut à quelque chose de websocket spécifiques (puisque je ne sais pas ce que le protocole de déclaration ressemble).
Ou est-ce peut-être un client de problème côté.
Merci pour votre aide,
Leo
edit: Ce Problème a été résolu avec Tomcat 7.0.28 (Description Du Bug, changelog)
Vous devez vous connecter pour publier un commentaire.
Tomcat a plusieurs questions avec WebSocket, et l'un d'eux est-il fermer la connexion après 20 secondes (c'est le connectTimeout valeur dans server.xml). Augmentez cette valeur pour contourner le problème.
-- Jeanfrancois
J'ai réussi à obtenir le websocket ouvrir à l'infini. Tout ce que vous devez faire est de régler les
connectionTimeout
dans leserver.xml
de Apache au moins un (connectionTimeout="-1"
). Qui a résolu mon problème. 🙂ref:
Si vous avez besoin de garder la connexion ouverte, la commande ping sur le client/serveur. C'est le seul moyen fiable de s'assurer qu'il ya quelque chose à la fin de la connexion.
L'internet n'est pas un transport fiable, de sorte qu'il vaut la peine de s'assurer que votre code peut gérer déconnecte.
ENSEMBLE DANS SERVER.XML
en dehors de connectionTimeout dans server.xml une autre raison pourrait être votre message websocket implementaton classe ainsi. getReadTimeout méthode est celle qui est utilisée pour définir websocket timeout en millisecondes. par exemple, si vous souhaitez définir socket délai d'attente de 2 minutes (2*60*1000) que vous pouvez utiliser le code ci-dessous.
Remarque: vous pouvez définir l'infini délai d'attente (toujours ouvert) en renvoyant -1.
Pour la mise en œuvre complète, reportez-vous cet exemple de code dans ma réponse.
tomcat websocket servlet port d'écoute