Faye bloquea conexiones

Estoy usando Faye en una aplicación Rails y me encuentro con un comportamiento muy extraño en el que, si Faye llega a subscribe antes de que se entreguen todos los activos (es decir, después de $(document).ready() se llama pero mientras se ejecuta la rueda giratoria en su navegador), entonces faye lo hará bloquear el navegador en modo "cargando" (como en, la ruleta nunca se detiene).

I CREEMOS Estoy usando websockets y no sondeos largos, aunque no estoy seguro de cómo estar seguro. Veo en el registro de Faye, al habilitar los mensajes de depuración que se refieren a websocket:

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

El navegador se conecta a un independiente thin servidor en ejecución

require 'faye'
require 'bundler/setup'

Bundler.require(:faye)

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

el comando que estoy usando es

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

Estoy ejecutando faye 0.8

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

Esto es lo que veo en Chrome

Después de 5 minutos simplemente [Esc] y aparecen esos, que faye.js es el script que sirve Faye, y parece que cada uno de esos archivos parece corresponder a cada subscribe llamada.

Curiosamente, después de esos 5 archivos hay bloques de 5 llamadas, que comienzan cada minuto.

enter image description here

¡Cualquier ayuda con esto sería muy apreciada!

preguntado el 12 de junio de 12 a las 21:06

1 Respuestas

Esta es una especie de respuesta de marcador de posición, en caso de que alguien más se encuentre con algo similar.

Descubrí que estaba usando Faye.Client en dos lugares diferentes, por lo que se estaban configurando dos conexiones con el servidor de Faye, esto es algo que Faye no admite (porque no es necesario). Eliminar el otro cliente faye ayudó, todavía veo un comportamiento extraño a veces, pero eso ciertamente ha mejorado un poco las cosas.

Respondido el 15 de junio de 12 a las 22:06

Además, puedes usar Faye.Logging.logLevel = 'debug'; para depurar el cliente. Encontré eso bastante útil. - Talonera Pablo Fernandez

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.