2017-04-26 161 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