2017-04-26 4 views
0

Nous utilisons PrimeFaces 4.0 (socket) et l'atmosphère 2.0.3 pour le push côté serveur dans notre application J2E.Comment fermer la connexion socket PrimeFaces

Le problème avec l'application il ne ferme pas socket après la fermeture du navigateur ou la déconnexion de l'application. Par conséquent, l'application produit un socket dans le statut CLOSE_WAIT et, en fin de compte, crée trop de connexions ouvertes (1024) et renvoie une erreur en dessous de l'erreur. La plupart des connexions sur ce port sur le statut CLOSE_WAIT.

JBWEB003008: Nombre maximal de threads (1024) créés pour le connecteur avec l'adresse /0.0.0.0 et le port XXX.

extrait de code pour la prise en JSP

<p:socket id="s" channel="#{xxx.eventChannel}" 
       onMessage="modelEventHandler.handleModelEvent" widgetVar="xxxSocket" transport="sse" onClose=""/> 

J'ai essayé de fermer en appelant la fonction java script sur un clic de bouton de fermeture de session, mais il ne fonctionne pas.

function logOut() { 
       PF(xxxSocket).disconnect(); 
      } 
+0

Je suppose que dans le ** code réel ** vous avez des guillemets autour de xxxSocket ('xxxSocket')? Et "ne fonctionne pas" est vague – Kukeltje

+0

@Kukeltje - Oui, les guillemets simples est autour de xxxSocket.Et il ne ferme toujours pas de socket. La demande de connexion CLOSE_WAIT est toujours là. – DevD

+0

'Not closing'! = = "CLOSE_WAIT" ... Le fait que ** IS ** soit dans CLOSE_WAIT sur votre serveur signifie que le client envoie un signal indiquant qu'il n'a plus besoin de/want/utilise le socket. https://www.google.com/search?q=what+is+CLOSE_WAIT – Kukeltje

Répondre

0

Vous pouvez essayer PF ('chat-socket'). Disconnect();

+0

Qu'est-ce que 'chat-socket' ici? – DevD

+0

La valeur du widgetVar, si efficace, l'affiche vous dit de faire ce que vous faites déjà (à l'exception qu'il y a des guillemets 'simples' ici, mais si vous ne l'avez pas dans votre page, vous obtiendrez une erreur , donc très probablement que c'est une faute de frappe dans votre code – Kukeltje

+0

@Kukeltje Problème a été résolu après la déconnexion du socket à l'aide des changements de code suggérés au côté serveur dans les méthodes de déconnexion et de délai d'attente de session. Comme RequestContext.getCurrentInstance.execute ("PF ('value discute() ") – DevD