2017-04-26 160 views
0

我们在我们的J2E应用程序中使用PrimeFaces 4.0(套接字)和氛围2.0.3进行服务器端推送。如何关闭PrimeFaces套接字连接

应用程序问题,它关闭浏览器或从应用程序注销后不关闭套接字。因此,应用程序产生一个处于CLOSE_WAIT状态的套接字,并最终创建太多的打开连接(1024),并且抛出错误。此端口上的大多数连接处于CLOSE_WAIT状态。

JBWEB003008:为地址为/.0.0.0.0和端口XXX的连接器创建的最大线程数(1024)。在JSP

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

代码片段插座我已经尝试通过注销按钮的点击调用Java脚本函数关闭这一点,但它不工作。

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

我假设在**真正的代码**你有单引号xxxSocket('xxxSocket')?并且“不起作用”是模糊的 – Kukeltje

+0

@Kukeltje - 是的,单引号在xxxSocket周围,并且它仍然没有关闭套接字。 CLOSE_WAIT连接请求仍然存在。 – DevD

+0

'不关闭'!=进入“CLOSE_WAIT”......你的服务器上的CLOSE_WAIT中它** IS **的事实意味着客户端发送一个信号,表明它不再需要/不需要/使用套接字。 https://www.google.com/search?q=what+is+CLOSE_WAIT – Kukeltje

回答

0

您可以试试PF('chat-socket')。disconnect();

+0

什么是“聊天套接字”在这里? – DevD

+0

widgetVar的值非常有效,海报告诉你做什么已经做了(除了这里有'单独'引号的例外,但是如果你的页面没有这个引号,你会得到一个错误,因此很可能是代码中的错字 – Kukeltje

+0

@Kukeltje在注销和会话超时方法中,在服务器端的建议代码更改的帮助下断开套接字后,问题已解决。类似于RequestContext.getCurrentInstance.execute(“PF('value ()“)。disconnect()”)。 – DevD