Divulgation : Je suis l'auteur de Faye.
- En ce qui concerne Faye, tout ce que vous avez dit est vrai.
- Faye implémente la plupart de Bayeux, la seule chose manquante pour le moment étant les canaux de service, dont je n'ai pas encore été convaincu de l'utilité. En particulier, Faye est conçu pour être compatible avec l'implémentation de référence de Bayeux de CometD, ce qui a une grande influence sur ce qui suit.
- Conceptuellement, oui : Faye pourrait utiliser Socket.IO. Dans la pratique, il y a quelques obstacles à cela :
- Je n'ai aucune idée du type de support côté serveur requis par Socket.IO, et l'exigence que le client Faye (il existe des clients côté serveur dans Node et Ruby, rappelez-vous) soit capable de parler à n'importe quel serveur Bayeux (et le serveur Faye à n'importe quel client Bayeux) peut être un obstacle.
- Bayeux exige spécifiquement que les serveurs et les clients prennent en charge certains types de transport, et indique comment négocier celui à utiliser. Il précise également comment ils sont utilisés, par exemple comment le type de contenu d'une requête XHR affecte l'interprétation de son contenu.
- Pour certains types de traitement des erreurs, j'ai besoin d'un accès direct au transport, par exemple renvoi des messages lorsqu'un client se reconnecte après la mort d'un nœud WebSocket .
- Veuillez me corriger si j'ai fait une erreur - ceci est basé sur un examen rapide de la documentation de Socket.IO.
- Faye est juste un pub/sub, il est juste basé sur un protocole un peu plus complexe et a beaucoup de fonctionnalités intégrées :
- Extensions côté serveur et côté client
- Filtrage par caractères génériques sur les routes de canaux
- Reconnexion automatique, par exemple lorsque les WebSockets meurent ou que le serveur est hors ligne.
- Le client fonctionne dans tous les navigateurs, sur les téléphones, et côté serveur sur Node et Ruby.
Faye semble probablement beaucoup plus complexe que Juggernaut parce que Juggernaut délègue davantage, par exemple il délègue la négociation du transport à Socket.IO et le routage des messages à Redis. Ce sont deux bonnes décisions, mais ma décision d'utiliser Bayeux signifie que je dois faire plus de travail moi-même.
En ce qui concerne la philosophie de conception, l'objectif primordial de Faye est de faire en sorte qu'il fonctionne partout où le Web est disponible et qu'il soit absolument trivial à mettre en œuvre. Il est vraiment simple à utiliser, mais son extensibilité signifie qu'il peut être personnalisé de manière assez puissante, par exemple, vous pouvez le transformer en un service de poussée de serveur à client (c'est-à-dire empêcher les clients arbitraires de pousser vers lui) en ajoutant des extensions d'authentification.
Des travaux sont également en cours pour le rendre plus flexible du côté serveur. J'envisage d'ajouter la prise en charge de la mise en grappe et de rendre le moteur central de pub-sub pluggable afin que vous puissiez utiliser Faye en tant que frontal web sans état pour un autre système de pub-sub comme Redis ou AMQP.
J'espère que cela vous a été utile.
3 votes
Juste au cas où, Juggernaut a été déprécié ! Lire pourquoi blog.alexmaccaw.com/killing-a-library (en anglais) .
0 votes
Les événements HTML 5 Server-Sent semblent être l'alternative recommandée selon l'auteur de Juggernaut