2013-05-02 88 views
0

我正在使用Spring註釋初始化我的BayeuxServer。我啓用的WebSocket在我的Spring bean設置運輸 -使用websocket彈簧初始化的長輪詢回退

BayeuxServerImpl bean = new BayeuxServerImpl(); 

bean.setTransports(new WebSocketTransport(bean)); 

但是現在,當WebSocket連接失敗或js($.cometd.websocketEnabled = false;)被禁用,它不會回落至長輪詢成功。它在螢火蟲控制檯中拋出錯誤"400 Unknown Bayeux Transport"

我無法設置LongPollingTransportsetTransports因爲LongPollingTransport是庫中的抽象類。我試着創建一個擴展LongPollingTransport的類,並在setTransports API中指定它,但那也不起作用。請讓我知道如果我做錯了什麼。如果websocket失敗,我們需要長時間輪詢才能工作。

的cometd版本:2.5.1

碼頭版本:7.6.8

回答

1

通過調用BayeuxServer.setTransports(...)只有一個運輸,你基本上禁用任何回落的能力,因爲你明確告訴的cometd使用1個運輸。

LongPollingTransport根據具體使用機制有2個子類;你可能想要使用類JSONTransport

請注意,CometD documentation有一個使用XML的how to setup WebSocket with Spring的示例,但它足以將XML轉換爲代碼以使其可用於註釋。

基本上,這一切歸結爲:

bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer)); 
+0

感謝西蒙。這工作。其實我已經嘗試過,但我想我使用'JSONPTransport'而不是'JSONTrasport'。沒有真正注意到這一點。我的錯。再次感謝! – 2013-05-03 18:25:19

相關問題