Disclosure: Sono l'autore di Faye.
- Per quanto riguarda Faye, tutto ciò che hai detto è vero.
- Faye implementa la maggior parte di Bayeux, l'unica cosa che manca adesso sono i canali di servizio, di cui devo ancora essere convinto dell'utilità di. In particolare, Faye è progettato per essere compatibile con l'implementazione di riferimento CometD di Bayeux, che ha una grande influenza sui seguenti.
- Concettualmente, sì: Faye potrebbe utilizzare Socket.IO. In pratica, ci sono alcuni ostacoli a questo:
- Non ho idea di quale tipo di supporto Socket lato server.L'IO richiede, e il requisito che il client Faye (ci sono client lato server in Node e Ruby, ricorda) sia in grado di parlare con qualsiasi server Bayeux (e il server Faye a qualsiasi client Bayeux) potrebbe essere un break-off.
- Bayeux ha requisiti specifici che server e client supportano determinati tipi di trasporto e dice come negoziare quale utilizzare. Specifica anche come vengono utilizzati, ad esempio come il Content-Type di una richiesta XHR influisce sul modo in cui il suo contenuto viene interpretato.
- Per alcuni tipi di gestione degli errori, è necessario l'accesso diretto al trasporto, ad esempio resending messages when a client reconnects after a Node WebSocket dies.
- Per favore correggimi se ho qualcosa di sbagliato - questo si basa su una scansione superficiale della documentazione Socket.IO.
- Faye è solo pub/sub, è solo sulla base di un protocollo leggermente più complesso e ha un sacco di sottigliezze costruito in:
- server e lato client estensioni
- jolly pattern-matching sulle linee del canale
- Riconnessione automatica, ad es. quando WebSockets muoiono o il server va offline
- Il client funziona in tutti i browser, sui telefoni e server-side sul nodo e Ruby
Faye probabilmente sembra molto più complessa rispetto a Juggernaut perché Juggernaut delega di più, ad es delega la negoziazione dei trasporti a Socket.IO e il routing dei messaggi a Redis. Queste sono entrambe ottime decisioni, ma la mia decisione di usare Bayeux significa che devo fare più lavoro da solo.
Per quanto riguarda la filosofia del design, l'obiettivo principale di Faye è che dovrebbe funzionare ovunque il Web sia disponibile e dovrebbe essere assolutamente banale per andare avanti. È molto semplice iniziare, ma la sua estensibilità significa che può essere personalizzato in modi abbastanza potenti, ad esempio è possibile trasformarlo in un servizio push da server a client (ovvero arrestare i client arbitrari che lo spingono) aggiungendo estensioni di autenticazione .
C'è anche del lavoro in corso per renderlo più flessibile sul lato server. Sto cercando di aggiungere il supporto per il clustering e rendere il core pub-sub plug-in in modo da poter utilizzare Faye come front-end Web senza stato per un altro sub-pub come Redis o AMQP.
Spero che questo sia stato utile.
Nel caso in cui, Juggernaut è stato deprecato! Leggi perché http://blog.alexmaccaw.com/killing-a-library. – Maziyar
HTML 5 Gli eventi inviati dal server sembrano essere l'alternativa consigliata in base all'autore di Juggernaut – Harindaka