2015-02-23 9 views
0

это прослушивает меня почти два дня.Сервер Bayeux зависает при подключении.

Я пишу клиента Bayeux. Я использую библиотеку WebSocket-client от Jetty и подключаюсь к серверу .

открыть соединение 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}} 

последнего журнала сообщений на сервере Фей, прежде чем он висит: Ping «l8xhgf0t5gikcukcknhr5npfx11s5w9», 45

Но я никогда не получить Ping кадра на стороне клиента. Я понятия не имею, почему сервер зависает для этих 45-х, но мне нужно это решить. Кто-нибудь из вас видел это раньше? Любая помощь/предложения/подсказки очень ценится :)

ответ

1

Поведение, которое вы испытываете, - это именно то, что должен делать сервер Bayeux.

Сервер не «висит»; он держит запрос в long-polling моде.

Я не знаю много Фей но CometD project, который определил Bayeux protocol specification, реализует сервер таким же образом, когда запрос на /meta/connect сообщений проводятся для значения тайма-аута.

+0

спасибо! Я был смущен, потому что я выбрал транспорт для websocket, поэтому я ожидал, что сообщение будет немедленно возвращено. В следующий раз мне нужно более внимательно прочитать спецификации. –

+0

@TomasZoral как руководитель проекта CometD Меня будет интересовать, на каком языке/платформе вы пишете клиента Bayeux. В проекте CometD есть Java и JavaScript, которые не уверены в проекте Faye. – sbordet