Socket.IO semble être la bibliothèque d'émulation WebSocket la plus populaire et la plus active. Juggernaut l'utilise pour créer un système pub/sub complet.
Faye est également populaire et actif, et possède sa propre bibliothèque javascript, ce qui rend ses fonctionnalités complètes comparables à Juggernaut. Juggernaut utilise un nœud pour son serveur et Faye peut utiliser un nœud ou un rack. Juggernaut utilise Redis pour la persistance ( correction: il utilise Redis pour pub/sub), et Faye ne garde que l'état en mémoire.
Divulgation: je suis l'auteur de Faye.
Faye semble probablement beaucoup plus complexe que Juggernaut parce que Juggernaut délègue plus, par ex. 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.
Quant à la philosophie de conception, l'objectif primordial de Faye est qu'elle devrait fonctionner partout où le Web est disponible et devrait être absolument triviale pour commencer. C'est très simple pour commencer, mais son extensibilité signifie qu'il peut être personnalisé de manière assez puissante, par exemple, vous pouvez le transformer en un service Push de serveur à client (c'est-à-dire arrêter les clients arbitraires qui y poussent) en ajoutant des extensions d'authentification .
Des travaux sont également en cours pour le rendre plus flexible côté serveur. J'envisage d'ajouter la prise en charge du clustering et de rendre le moteur pub-sub principal enfichable afin que vous puissiez utiliser Faye comme interface Web sans état pour un autre système pub-sub comme Redis ou AMQP.
J'espère que cela vous a été utile.
Je serai vraiment intéressé par ce que l'auteur de Faye a à dire. Comme je l'ai dit, je ne l'ai pas utilisé et ce serait bien de savoir comment il se compare à Juggernaut. C'est probablement le cas de l'utilisation du meilleur outil pour le travail. Si vous avez besoin d'un pub, Juggernaut le fait très bien.
Faye le pouvait certainement. Un autre exemple d'un projet similaire sur Socket.IO: