2015-02-23 147 views
0

這讓我感到困擾了近兩天。Bayeux服務器掛起連接請求

我正在寫貝葉客戶端。我使用Jetty的WebSocket-client庫並連接到Faye服務器。

我打開與握手請求一個WS連接到服務器(一切本地主機):

{"channel":"/meta/handshake","supportedConnectionTypes":["long-polling","callback-polling","websocket"],"version":"1.0"} 

客戶端馬上接收到握手響應:

{"channel":"/meta/handshake","successful":true,"version":"1.0","supportedConnectionTypes":["long-polling","cross-origin-long-polling","callback-polling","websocket","eventsource","in-process"],"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","advice":{"reconnect":"retry","interval":0,"timeout":45000}} 

然後客戶端發送連接請求:

{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","connectionType":"websocket","channel":"/meta/connect"} 

然後,服務器掛起45秒(超時值)然後發送這樣的響應:

{"clientId":"l8xhgf0t5gikcukcknhr5npfx11s5w9","channel":"/meta/connect","successful":true,"advice":{"reconnect":"retry","interval":0,"timeout":45000}} 

王菲服務器上的最後一個日誌消息,它掛起之前平安「l8xhgf0t5gikcukcknhr5npfx11s5w9」,45

但我從來沒有收到客戶端平架。 我不知道爲什麼服務器掛起這45個,但我需要解決這個問題。 有沒有人見過這個?任何幫助/建議/提示非常感謝:)

回答

1

您遇到的行爲正是一個貝葉服務器應該做的。

服務器不「掛起」;它以long-polling的方式持有該請求。

我不太瞭解Faye,但CometD project(定義了Bayeux protocol specification)以相同的方式實現服務器,其中/meta/connect消息請求保留超時值。

+0

非常感謝!我很困惑,因爲我選擇了傳輸爲websocket,因此我期望這個消息能夠立即返回。下一次我需要更仔細地閱讀規格。 – 2015-02-25 13:33:48

+0

@TomasZaoral作爲CometD項目的領導者我會對您在編寫Bayeux客戶端的語言/平臺感興趣。 CometD項目有一個Java和一個對Faye項目不太確定的JavaScript。 – sbordet 2015-02-25 17:31:30

相關問題