2014-05-20 55 views
0

我使用grails-events-push插件並且一切順利,但是當系統閒置一段時間(大約3分鐘)時,連接丟失並且無法重新連接與服務器。 當我刷新頁面時,一切都進行得很順利。Grails上的氣氛在幾分鐘後掛起

這是關於鉻錯誤: WebSocket連接到「WS://192.168.1.109:8080/EasyRestaurant // G-eventsbus/eventsbus X - 大氣跟蹤-ID = 0 & X-大氣 - 框架X-Atmosphere-TrackMessageSize = true & X-Cache-Date = 0 & Content-Type = application/json & X-atmo-protocol = true'failed:Received:Received:一個包含保留狀態碼的關閉幀。

發生此錯誤後,如果我嘗試發送另一個事件: 沒有暫停的連接可用。確保在調用此方法之前調用了atmosphere.subscribe並調用了request.onOpen。我使用的是tomcat中的atmosphere-javascript-2.1.5:7.0.52.1(events-push:1.0.0.BUILD-SNAPSHOT和org.grails.plugins:events:1.0.0.BUILD-SNAPSHOT)我不知道哪個版本的氣氛使用了grails-events-plugin。

任何人都知道問題在哪裏?它是javascript中的氣氛客戶端還是grails中的grails-events-push插件?它是tomcat嗎?

謝謝!

回答

0

我在我的atmosphere plugin and sample app下面使用了兩個攔截器,並且沒有任何連接斷開或超時的問題。

org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor 
org.atmosphere.interceptor.HeartbeatInterceptor 

我快速瀏覽了Stephane的插件代碼,但我沒有看到一種簡單的方法來配置這些代碼。

您應該可以通過將下面的編譯行添加到應用程序的BuildConfig.groovy依賴項部分來試用最新的氛圍版本。我會先試一試。

dependencies { 
    // other dependencies 
    compile 'org.atmosphere:atmosphere-runtime:2.1.3' 
} 

您可以使用我的插件,但是您必須添加自己的事件處理代碼。在我的私人應用程序中,我使用Grails服務來處理髮送事件和通知,這並不難實現。

+0

我想使用HeartbeatInterceptor,但我不知道如何配置。我將以與您在配置中所做的相同的方式嘗試。如果它有效,我會接受你的答案!感謝您的回覆! – mpccolorado

+0

@mpccolorado我的插件配置工作方式與事件推送插件完全不同,所以我不認爲這會起作用。你嘗試過最新的大氣發佈嗎? – Ken

+0

我會嘗試你所建議的最新版本的氣氛!或者也許氛圍運行時:2.1.4和氛圍 - 客戶端的javascript-2.1.4。因爲我使用的是與grails-events-push和atmosphere-javascript-2.1.5一起爲客戶端提供的原始版本的氛圍(也許這是問題)。謝謝! – mpccolorado

相關問題