2013-04-24 49 views
1

我使用碼頭與延續來實現長輪詢,但我沒有看到一個方法來檢測客戶端斷開。碼頭 - 檢測斷開的客戶端(延續)

我知道在第一次運行(創建Continuation)和後續運行之間的時間內,由於HTTP的性質,客戶端和服務器之間可能沒有流量,但我可以通過只能夠在嘗試發回消息時(服務器調用Continuation)檢測到正在斷開連接的客戶端。

我一直在試圖找到檢測作家並沒有實際寫入到客戶端的方式,但我似乎無法找到一個。

回答

0

有沒有辦法在Java知道客戶端已經沒有試圖寫入連接,然後捕獲失敗斷開。如果你想編寫自己的長輪詢實現我的建議是簡單地使用的cometd(cometd.org),因爲它具有所有這一切已經完成,並給你一個完整的消息語義。如果不工作,你仍然需要編寫自己的,那麼該項目是如何最好地使用延續(或servlet的3.0異步servlet的)一個很好的例子。從檢測斷開打算開

+0

一切有關我的實現工作。你說「嘗試寫入連接然後捕獲失敗」將提供檢測斷開的客戶端的手段。這是我的案例的完美解決方案。你能提供一些代碼或者至少會拋出異常的方法嗎? – Marcus 2013-04-24 14:44:35

+0

相關[問題](http://stackoverflow.com/questions/155243/why-is-it-impossible-without-attempting-io-to-detect-that-tcp-socket-was-grac)和[回答] (http://stackoverflow.com/a/156403/775715) – 2013-04-24 16:16:19

+0

感謝鏈接@JoakimErdfelt,但問題涉及到直接檢測Java內的套接字閉包,而沒有任何IO。在我的情況下,當我發送消息(實際上是在執行一些IO)時,僅檢測一個已關閉的連接就足夠了。 – Marcus 2013-04-24 17:20:08