Фэй блокирует соединения

Я использую Faye в приложении rails и сталкиваюсь с очень странным поведением, когда, если faye доходит до subscribe до того, как все ресурсы будут обслужены (то есть после вызова $(document).ready(), но пока работает счетчик в вашем браузере), тогда faye будет заблокировать браузер в режиме "загрузки" (например, счетчик никогда не останавливается).

Я полагаю, что использую веб-сокеты, а не долгий опрос, хотя не уверен, как быть уверенным. Я вижу в журнале Фэй при включении отладочных сообщений, относящихся к веб-сокету:

2012-06-12 20:16:56 [DEBUG] [Faye::RackAdapter] Received via WebSocket[hybi-13]: [{"channel":"/meta/connect","clientId":"7w5vwypdaudnp9o64qwsb13om","connectionType":"websocket","id":"6s"}]

Браузер подключается к автономному thin серверу, работающему

require 'faye'
require 'bundler/setup'

Bundler.require(:faye)

bayeux = Faye::RackAdapter.new(:mount => '/faye', :timeout => 25)
bayeux.listen(9292)

команда, которую я использую,

exec bundle exec rackup faye.ru -s thin -E production

у меня фай 0.8

* faye (0.8.2)
* faye-websocket (0.4.5)

Это то, что я вижу в Chrome

Через 5 минут я просто [Esc] и вижу, что faye.js — это сценарий, который обслуживает Фэй, и кажется, что каждый из этих файлов соответствует каждому вызову subscribe.

Интересно, что после этих 5 файлов идут блоки по 5 вызовов, которые начинаются каждую минуту.

введите здесь описание изображения

Любая помощь в этом будет высоко оценена!


person Pablo Fernandez heelhook    schedule 12.06.2012    source источник


Ответы (1)


Это своего рода ответ-заполнитель на случай, если кто-то еще столкнется с чем-то подобным.

Я обнаружил, что использовал Faye.Client в двух разных местах, таким образом, устанавливались два соединения с сервером faye, это то, что faye не поддерживает (потому что в этом нет необходимости). Удаление другого клиента Faye помогло, я все еще иногда наблюдаю странное поведение, но это, безусловно, немного улучшило ситуацию.

person Pablo Fernandez heelhook    schedule 15.06.2012
comment
Также вы можете использовать Faye.Logging.logLevel = 'debug'; для отладки клиента. Я нашел это довольно полезным. - person Pablo Fernandez heelhook; 16.06.2012