2013-03-14 128 views
1

我有一個基於Spring的Web服務(JAX-RS),並且我想在長時間運行的情況下攔截客戶端斷開連接。 例如,當客戶端執行一個HTTP調用時,會在服務器上創建一個工作負載,但由於某種原因斷開連接(進程已終止),我想攔截該斷開連接並取消服務器上的工作,因爲客戶永遠不會得到他期待的結果。攔截客戶端與彈簧斷開?

春天可以嗎?

謝謝!

+0

爲什麼不以異步方式啓動處理並創建一個像'getStatus()'這樣的方法可供客戶端定期檢查狀態。那應該是我做的 – ant 2013-03-14 15:15:47

+0

。但我也爲客戶提供了一種阻止方法。 – 2013-03-14 15:21:50

回答

2

不,但這與Spring無關。

即使您可以直接訪問用於HTTP傳輸的套接字,也無法檢測到其他對等方已經關閉套接字而沒有嘗試讀取或寫入該套接字。如果不與任何HTTP協議處理程序發生衝突,這顯然也會嘗試使用該套接字。

+0

我認爲他可以使用基於window.onbeforeunload事件的JavaScript的一些解決方法和triger所需的停止與Ajax。 – 2013-03-15 12:25:58

+0

我不同意。有可能知道TCP套接字是否已經正常關閉:https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_termination(「當端點希望停止它的一半連接時,它發送一個FIN數據包,它另一端用ACK確認。「) – stackular 2015-07-08 11:32:12