Domanda

Socket.io Sembra essere la libreria di emochiuli WebSocket più popolare e attiva. Travolgente Lo utilizza per creare un pub/sottomarino completo.

Faye è anche popolare e attivo e ha la sua libreria JavaScript, rendendo la sua completa funzionalità paragonabile al juggernaut. Juggernaut utilizza il nodo per il suo server e Faye può utilizzare il nodo o il rack. Juggernaut usa Redis per la persistenza (correzione: Utilizza Redis per pub/sub) e Faye mantiene solo lo stato in memoria.

  1. È tutto al di sopra di Accurate?
  2. Faye dice che implementa Bayeux - Penso che Juggernaut non lo faccia- è che perché il juggernaut è di livello inferiore (cioè posso implementare Bayeux usando Juggernaut)
  3. Faye potrebbe passare all'utilizzo della libreria JavaScript del browser Socket.io se lo desiderasse? O le loro biblioteche Javascript fanno cose fondamentalmente diverse?
  4. Ci sono altre differenze architettoniche/di progettazione/filosofia tra i progetti?
È stato utile?

Soluzione

Divulgazione: sono l'autore di Faye.

  1. Per quanto riguarda Faye, tutto ciò che hai detto è vero.
  2. Faye implementa la maggior parte di Bayeux, l'unica cosa che manca in questo momento sono i canali di servizio, che non sono ancora convinto dell'utilità di. In particolare Faye è progettato per essere compatibile con l'implementazione di riferimento di COMETD di Bayeux, che ha un grande impatto sul seguente.
  3. Concettualmente, sì: Faye Potevo Usa Socket.io. In pratica, ci sono alcuni ostacoli a questo:
    • Non ho idea di quale tipo di socket di supporto sul lato server richiede e il requisito che il client Faye (ci sono client lato server in Node e Ruby, ricorda) essere in grado di parlare con qualsiasi server Bayeux (e il Faye Il server a qualsiasi client Bayeux) potrebbe essere un decollo.
    • Bayeux ha requisiti specifici che i server e i clienti supportano determinati tipi di trasporto e afferma come negoziare quale utilizzare. Specifica anche il modo in cui vengono utilizzati, ad esempio come il tipo di contenuto di una richiesta XHR influisce su come viene interpretato il suo contenuto.
    • Per alcuni tipi di gestione degli errori ho bisogno di accesso diretto al trasporto, ad esempio I messaggi in refensione quando un client si riconnette dopo che un nodo WebSocket muore.
    • Per favore, correggimi se ho uno di questi sbagliato: questo si basa su una scansione superficiale della documentazione socket.io.
  4. Faye è solo pub/sub, si basa solo su un protocollo leggermente più complesso e ha molte bellezze integrate:
    • Estensioni sul lato server e client
    • Matching di pattern sul jolly su percorsi di canale
    • Riconnessione automatica, ad es. Quando WebSockets muoiono o il server va offline
    • Il client funziona in tutti i browser, sui telefoni e sul lato server su Node e Ruby

Faye probabilmente sembra molto più complesso rispetto a Juggernaut perché Juggernaut delega di più, ad esempio delega la negoziazione del trasporto a Socket.io e il routing dei messaggi a Redis. Queste sono entrambe decisioni belle, ma la mia decisione di usare Bayeux significa che devo fare più lavoro da solo.

Per quanto riguarda la filosofia del design, l'obiettivo di prevalente di Faye è che dovrebbe funzionare ovunque il web è disponibile e dovrebbe essere assolutamente banale per andare avanti. Sono davvero semplice per iniziare, ma la sua estensibilità significa che può essere personalizzato in modi abbastanza potenti, ad esempio puoi trasformarlo in un servizio push da server a cliente (cioè i client arbitrari che lo spingono) aggiungendo estensioni di autenticazione .

C'è anche lavoro in corso per renderlo più flessibile sul lato server. Sto cercando di aggiungere supporto per clustering e rendere il motore Pub-Sub Core Collegamento in modo da poter utilizzare Faye come frontend Web apolide per un altro sistema pub-sub come Redis o AMQP.

Spero che questo sia stato utile.

Altri suggerimenti

  1. Afaik, sì, a parte il fatto che Juggernaut usa Redis solo per i pubsub, non per la persistenza. Significa anche che le librerie dei clienti nella maggior parte delle lingue sono già state scritte (poiché ha solo bisogno di un adattatore Redis).
  2. Juggernaut non implementa Bayeux, ma piuttosto ha un protocollo JSON personalizzato molto semplice
  3. Non so, probabilmente
  4. Juggernaut è molto semplice e progettato per essere così. Anche se non ho usato Faye, dai documenti sembra che abbia molte più funzionalità di quanto solo pubsub. Essendo costruito in cima a Socket.io ha anche i vantaggi, Juggernaut è supportato praticamente in tutti i browser, sia desktop che mobile.

Sarò davvero interessato a ciò che l'autore di Faye ha da dire. Come ho detto, non l'ho usato e sarebbe bello sapere come si confronta con il juggernaut. È probabilmente il caso di utilizzare lo strumento migliore per il lavoro. Se è pubsub di cui hai bisogno, Juggernaut lo fa molto bene.

Faye certamente potrebbe. Un altro esempio di un progetto simile in cima a socket.io:

https://github.com/aaronblohowiak/push-it

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top