2012-08-01 323 views
10

我使用的Netty的WebSockets,一切似乎除了這個小問題,做工精細WebSocket連接沒有關閉當使用Mozilla Firefox(目前使用Firefox 14)時關閉,但同樣的事情在Chrome 20/21中不會發生。鉻:當瀏覽器關閉

任何人都看到了類似的問題/誰能告訴爲什麼連接不自動關閉?

回答

6

我想我應該檢查中鉻的錯誤一節前面,但我不知道這是否是一個錯誤。 前面已經有人報告和鉻的bug已經存在:

Issue 51687 : WebSocket: Send close with code 1001 on reload/tab close

更新:有人提交了一個補丁來解決這個問題,可以在上面的鏈接中可以看出。

+1

關閉瀏覽器時,Chrome仍然不會關閉連接。 :( – Goot 2014-05-12 00:18:07

1

這可能不是正確的,但我不能張貼到你的問題發表評論。如果您的應用程序正在運行,並且已選擇「關閉Chromium時繼續運行後臺應用程序」,則Chrome/Chromium並不會真正關閉。

這可能是因爲它將該WebSocket連接作爲一個應用程序。試着看看你的運行過程,並殺死你發現的任何鉻/鉻過程。

再次,這只是我的猜測。

+0

不,我不認爲在關閉的標籤,以便即使禁用該選項後,WebSocket連接不會被關閉。 – Rndm 2012-08-01 09:53:59

+0

這可能是Chrome中的一個bug。您應該使用鉻項目打開一個錯誤報告。 – 2012-08-01 09:55:44

+0

我在這裏發佈它以確認是否有其他人看過它或有一些選項可用來解決它。 – Rndm 2012-08-01 09:56:53

0

Chrome不關閉連接,當用戶將關閉窗口或瀏覽器。 它會觸發一個錯誤事件。

可能的解決方法看起來是這樣的:

@OnError 
    public void onErr(Throwable t) { 
     onClose(this.container.getWsSession(), null); 

    } 

但這每次將關閉連接,錯誤被觸發。您可能無法在自行關閉連接之前檢查可丟棄物。

更多的討論,請加入這樣一個問題:

Websocket: Closing browser triggers onError() in chrome but onClose() event in Firefox