9
votes

Socket.io avec rabbitmq?

J'utilise actuellement Socket.io avec Redis Store.

Et j'utilise la fonctionnalité de la chambre avec elle.

Donc, je suis totalement correct avec la chambre rejoindre (abonnez-vous)

et laisser (désabonnement) avec socket.io.

Je viens de voir cette page

http://www.rabbitmq.com/blog / 2010/11/12 / rabbbitmq-nodejs-rabbébitjs /

Et j'ai trouvé que certaines personnes utilisent Socket.io avec Rabbitmq.

Pourquoi utiliser Socket.IO seul n'est pas assez bon?

Y a-t-il une bonne raison d'utiliser Socket.io avec Rabbitmq?


0 commentaires

3 Réponses :


20
votes

socketio est un navigateur -> Mécanisme de transport de serveur, tandis que Rabbitmq est un serveur -> Bus de messagerie de serveur.

Les deux peuvent être mis en œuvre ensemble pour créer un système très réactif dans des scénarios dans lesquels un parcours utilisateur consiste en un message de départ de la vie sur un navigateur et se retrouvant, disons, une couche de persistance (telle qu'une base de données).

Un message serait transporté sur le serveur Web via Socketio, puis au lieu du serveur Web responsable de la persistance du message, il le laisser tomberait sur une file d'attente de lapin et laisserait un autre processus responsable de la persister. De cette façon, le serveur Web est libre de revenir à ses responsabilités sur le Web et, de manière cruciale, atténuant sa charge.


2 commentaires

Donc, le rabbbitmq peut soulager de lourdes charges de messages persistants. Recommandez-vous d'utiliser Rabbitmq en face de Socket.io? De cette façon, Socket.IO peut être très évolutif avec des clusters de serveur Socket.io plus petits, mais avec des grappes de serveur rabbbitmq. Suis-je sur la bonne voie?


Si ce que vous entendez par «rabbbitmq devant socket.io», vous disposez d'une ferme Web qui utilise SocketoIo vers des demandes de courtiers à partir du client, puis utilisez un cluster de rabbbitmq pour supprimer des messages destinés à la persistance et ensuite avoir une série de services distincts. qui consomment de Rabbitmq et persistent les messages de manière appropriée, alors oui ;-)



5
votes

Regardez à Sockjs http://sockjs.org .

  1. Il est fait par l'équipe rabbbitmq
  2. C'est plus simple que Socket.io
  3. Il y a un serveur Erlang pour SockJS

    En dehors de cela, il existe un projet expérimental dans l'équipe de lapbitmq qui a l'intention de fournir un plugin SockJS pour rabbbitmq.


2 commentaires

serait tout à fait intéressé à en savoir plus sur ce projet expérimental.


Voici les notes de publication officielles: rabbbitmq.com/ Blog / 2012/05/14 / Présentation-rabbbitmq-web-stomp



5
votes

Je viens d'utiliser Rabbitmq avec Socket.io pour une raison totalement différente de celle de la réponse acceptée. Ce n'était pas cela pertinent en 2012, c'est pourquoi je suis à jour ici.

J'utilise un déploiement de docker essaim d'une application de discussion avec évolutivité et haute disponibilité. J'ai trois réplicas de l'application de discussion (qui utilise Socket.io) en cours d'exécution dans le cluster. Le groupe d'essaims permet de réduire automatiquement les demandes entrantes et à tout moment, un client peut être connecté à l'une des trois répliques de l'application.

Avec ce scénario, il est vraiment nécessaire de synchroniser les réponses de la bande Web dans les répliques de l'application, car deux clients connectés à deux instances différentes de l'application ne se seraient pas les messages de chacun, car ils ont été connectés à différentes sites Web.

C'est là que la Rabbitmq intervient. Il synchronise toutes les instances de l'application et chaque fois qu'un message est poussé d'une bande Web sur une réplique, il est poussé par toutes les répliques.

 Entrez la description de l'image ici

Les détails complets du projet ont été donnés ici . Il s'agit d'un cas d'utilisation potentiel de socket.io et de rabbbitmq utilise conjointement. Cela vaut pour toute application utilisant Socket.IO dans un environnement distribué à haute disponibilité et évolutivité.


0 commentaires