web-dev-qa-db-fra.com

Pusher vs Pubnub vs open source Socket.io / SignalR.net / Faye / jWebSocket

J'évalue actuellement Pusher et PubNub pour permettre des communications bidirectionnelles en temps réel entre mes clients principalement Web et mes serveurs. Les deux sont impressionnants, les documents de Pusher semblant meilleurs, et l'évolutivité et la fiabilité de PubNub sont clairement un point fort pour eux.

Cependant, comme je gère un budget, je crains que les coûts de Pusher & PubNub ne deviennent un problème pour nous, et j'envisage donc d'utiliser l'une des alternatives open source - j'ai principalement examiné Socket.io, Faye et jWebSocket.

J'ai mes préoccupations si je gère le service moi-même:

  • Quelqu'un a-t-il déjà fait évoluer un Socket.io ou une autre solution open source sur plusieurs serveurs auparavant? PubNub prétend traiter 1M de messages par seconde!, je doute quelque peu que Socket.io puisse le faire sans un nombre insondable de serveurs, si cela pouvait fonctionner.
  • Y a-t-il des fonctionnalités dans les services payants que je vais probablement manquer au fil du temps si je choisis les solutions open source?
  • La latence sera-t-elle vraiment un problème si j'ai mon serveur sur AWS de toute façon? PubNub se trouve à plusieurs endroits, donc je pense que cela devrait réduire la latence, même si un message doit être envoyé des États-Unis au Japon, avoir un serveur au Japon n'aiderait pas à la latence car il doit toujours y aller d'une manière ou d'une autre.

Merci pour le conseil.

71
Matthew O'Riordan

Faye utilisant Node.js a été très facile à configurer pour moi et a d'abord très bien fonctionné lors des tests. Cependant, même si la charge sur mon application n'est que d'environ 10 demandes par seconde avec environ 3000 connexions ouvertes - lorsque je l'ai commutée en direct, l'utilisation du processeur node.js était épinglée à 100% (1 cœur sur 8 disponible sur ma boîte). J'étais un peu déçu par cela et j'attendais plus.

J'ai envisagé d'utiliser redis ou d'exécuter plus d'une instance de nœud sur différents ports, puis de répartir la charge à la fin de mon application, mais en regardant les prix de PubNub, il semblait beaucoup plus facile de simplement leur décharger tout cela.

Après avoir essayé à la fois Pusher et PubNub, j'ai trouvé que PubNub était à la fois moins cher et beaucoup plus faible latence pour moi (je suis hébergé à Singapour et alors que Pusher était ~ 500 ms pour moi, PubNub était ~ 250 ms aller-retour pour moi à partir de mon application). Si vous êtes hébergé aux États-Unis, la différence serait probablement bien moindre.

J'ai également regardé Ape-Server mais je n'ai pas trouvé de bons tutoriels/documentation pour configurer un modèle de publication/abonnement, alors sautez-le - mais peut-être êtes-vous plus intelligent que moi et aurez une meilleure expérience :)

21
james