Divulgación: soy el autor de Faye.
- En cuanto a Faye, todo lo que ha dicho es verdad.
- Faye implementa la mayor parte de Bayeux, lo único que falta en este momento son los canales de servicio, de los cuales aún estoy convencido de la utilidad. En particular, Faye está diseñado para ser compatible con la implementación de referencia CometD de Bayeux, que tiene una gran relación con lo siguiente.
- Conceptualmente, sí: Faye podría usar Socket.IO. En la práctica, existen algunas barreras para esto:
- No tengo idea de qué tipo de Socket de soporte del lado del servidor.IO requiere, y el requisito de que el cliente de Faye (hay clientes del lado del servidor en Node y Ruby, recuerde) pueda hablar con cualquier servidor de Bayeux (y el servidor de Faye con cualquier cliente de Bayeux) puede ser un factor decisivo.
- Bayeux tiene requisitos específicos que los servidores y clientes admiten ciertos tipos de transporte, y dice cómo negociar cuál usar. También especifica cómo se usan, por ejemplo, cómo el tipo de contenido de una solicitud de XHR afecta la forma en que se interpreta su contenido.
- Para algunos tipos de manejo de errores necesito acceso directo al transporte, por ejemplo resending messages when a client reconnects after a Node WebSocket dies.
- Corrígeme si tengo algo de esto mal, esto se basa en un escaneo superficial de la documentación de Socket.IO.
- Faye está de pub/sub, es sólo basado en un protocolo ligeramente más complejo y tiene muchas maravillas construidas en:
- del servidor y del lado del cliente extensiones
- Comodín de coincidencia de patrones en rutas de canales
- Reconexión automática, p. ej. cuando WebSockets mueren o el servidor se cierra
- El cliente funciona en todos los navegadores, en los teléfonos, y del lado del servidor en el nodo y Ruby
Faye probablemente se parece mucho más compleja en comparación con Juggernaut porque Juggernaut delega más, por ej. delega la negociación de transporte a Socket.IO y el enrutamiento de mensajes a Redis. Estas son buenas decisiones, pero mi decisión de usar Bayeux significa que tengo que hacer más trabajo yo mismo.
En cuanto a la filosofía del diseño, el objetivo primordial de Faye es que debería funcionar en todos los sitios web disponibles y que debería ser absolutamente trivial. Es muy sencillo comenzar, pero su extensibilidad significa que puede personalizarse de maneras bastante poderosas, por ejemplo, puede convertirlo en un servicio de inserción de servidor a cliente (es decir, evitar que los clientes arbitrarios lo presionen) agregando extensiones de autenticación. .
También hay trabajos en curso para hacerlo más flexible en el lado del servidor. Estoy buscando agregar soporte de clúster y hacer que el motor de pub secundario se pueda conectar para que pueda usar Faye como una interfaz web sin estado para otro sistema de pub-sub como Redis o AMQP.
Espero que esto haya sido útil.
¡Por las dudas, Juggernaut ha quedado en desuso! Lea por qué http://blog.alexmaccaw.com/killing-a-library. – Maziyar
HTML 5 Los eventos enviados por el servidor parecen ser la alternativa recomendada según el autor de Juggernaut – Harindaka