Que dois-je utiliser? Socket.io chambres ou Redis pub-sub?
Question assez simple. Je suis de construction en temps réel de jeu à l'aide de nodejs que mon serveur et je me demandais si il n'y a aucune information disponible sur lequel est le plus fiable et lequel est le plus efficace?
Je suis fortement en utilisant à la fois le Redis et de la Prise.io tout au long de mon code. Donc, je veux savoir si je dois utiliser Socket.io Chambres ou je serais mieux de les utiliser redis' pub-sub ?
Mise à jour:
Juste réalisé qu'il y a une raison très importante pour laquelle vous souhaitez utiliser redis pub/sub plus de prise.io chambres. Avec La Prise.io chambres lorsque vous publiez aux auditeurs, les (navigateur)clients de recevoir le message, avec le redis c'est en fait la (redis~sur le serveur), les clients qui, de recevoir des messages. Pour cette raison, si vous souhaitez informer tous (serveur)clients des informations spécifiques à chaque client et peut-être faire un traitement avant de passer à des clients de navigateur, vous êtes mieux d'utiliser redis. En utilisant le redis, vous pouvez simplement déclencher un événement à générer chacun des utilisateurs individuels, données, où qu'avec la prise.io vous avez réellement générer tous les utilisateurs de données unique à la fois, puis la boucle à travers eux et de les envoyer leurs données individuelles, dont près de défaites le but de chambres, au moins pour moi.
Malheureusement pour mes fins, je suis coincé avec le redis pour l'instant.
Mise à jour 2: Terminé le développement d'un plugin pour utiliser seulement 2 redis connexions, mais encore de permettre au client individuel de traitement, voir la réponse ci-dessous....
- question intéressante, je voudrais aussi savoir. probablement que ce post allait être d'un peu d'aide: stackoverflow.com/questions/10167206/...
- Merci pour le lien, que le dernier post qui fait un bon point. Peut-être moins adaptable à utiliser socket.io depuis (procédure) champ d'application pourrait être plus limitée.
- Quelqu'un peut-il expliquer les différences ? Les détails, ce serait bien.
Vous devez vous connecter pour publier un commentaire.
Redis pub/sub est grande dans le cas où tous les clients ont un accès direct à redis. Si vous avez plusieurs serveurs de nœuds, on peut pousser un message pour les autres.
Mais si vous aussi vous avez des clients dans le navigateur, vous avez besoin de quelque chose d'autre à envoyer des données à partir d'un serveur à un client, et dans ce cas, socket.io est grande.
Maintenant, si vous utilisez le support.io avec le Redis magasin, socket.io utilise Redis pub/sub sous le capot pour diffuser des messages entre les serveurs et les serveurs de propagation des messages aux clients.
Donc à l'aide d'une douille.io chambres avec socket.io configuré avec le Redis magasin est probablement le plus simple pour vous.
J'ai fini par écrire un nœud plugin pour permettre beaucoup de pub-sub clients, mais seulement besoin de 2 redis connexions au lieu des une nouvelle une sur chaque socketio contexte, il convient de travail en général, pensé que quelqu'un d'autre peut trouver une utilisation pour elle.
Ce code suppose que vous avez prise.io en cours d'exécution et d'installation, en gros, dans cet exemple n'importe quel nombre de socket.io les clients peuvent se connecter et il sera toujours toujours utiliser seulement 2 redis connexions, mais tous les clients peuvent s'abonner à leurs propres canaux. Dans cet exemple, tous les clients reçoivent un message " doux message!' au bout de 10 secondes.
Exemple avec la prise.io (en utilisant redis pub-sub):
Réels du plugin code:
J'ai jeté autour et essayé d'améliorer l'efficacité autant que je le pouvais, mais après avoir fait quelques tests de vitesse, j'ai conclu que c'était la manière la plus rapide que je puisse faire.
Pour up-to-date de la version: https://github.com/Jezternz/node-redis-pubsub