Question

Quelqu'un sait-il de façon ou penser peut-être il est possible de se connecter avec Node.js Nginx http module de pression pour maintenir une connexion permanente entre le client et le navigateur.

Je suis nouveau à la comète si juste ne comprennent pas la publication, etc peut-être quelqu'un peut me aider.

Ce que j'ai mis en place est à ce jour ce qui suit. J'ai téléchargé le plug-in jQuery.comet et mis en place le code de base suivant:

  

JavaScript Client

<script type="text/javascript">

    function updateFeed(data) {
        $('#time').text(data);
    }

    function catchAll(data, type) {
        console.log(data);
        console.log(type);
    }

    $.comet.connect('/broadcast/sub?channel=getIt');
    $.comet.bind(updateFeed, 'feed');
    $.comet.bind(catchAll);

    $('#kill-button').click(function() {
        $.comet.unbind(updateFeed, 'feed');
    });
</script>

Ce que je peux comprendre de tout cela est que le client va continuer à écouter l'URL suivie / diffusion / sub = getit. Quand il y a un message, il se déclenche updateFeed.

Assez basique et compréhensible de l'OMI.

  

Nginx http module de configuration push

application default_type / octet-stream; sendfile sur; keepalive_timeout 65; push_authorized_channels_only off;

server {
  listen       80;
  location /broadcast {
    location = /broadcast/sub {
      set $push_channel_id $arg_channel;
      push_subscriber;
      push_subscriber_concurrency broadcast;
      push_channel_group broadcast;
    }

    location = /broadcast/pub {
      set $push_channel_id $arg_channel;
      push_publisher;
      push_min_message_buffer_length 5;
      push_max_message_buffer_length 20;
      push_message_timeout 5s;
      push_channel_group broadcast;
    }
  }
}

Ok maintenant cela indique nginx écouter sur le port 80 pour les appels à / diffusion / sous et restituera toutes les réponses envoyées à / diffusion / pub.

Jolie également de base. Cette partie n'est pas si difficile à comprendre, et il est bien documenté sur Internet. La plupart du temps il y a un rubis ou un fichier php derrière ce qui fait la diffusion.

  

Mon idée est d'avoir Node.js /broadcast/pub de radiodiffusion. Je pense que cela va me laisser persistent streaming data du serveur au client sans interrompre la connexion. J'ai essayé l'approche à long sondage avec boucle la demande mais je pense que ce sera plus efficace.

Ou est-ce pas aller travailler.

  

fichier Node.js

pour créer les Node.js je suis perdu. Tout d'abord je ne sais pas comment avoir Node.js de travailler de cette façon.

La configuration je pour le vote à long est la suivante:

var sys = require('sys'), 
http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(new Date());
    res.close();
    seTimeout('',1000);
}).listen(8000);

Cette écoute sur le port 8000 et écrit uniquement sur la variable de réponse.

Pour ma longue interrogation nginx.config regardé quelque chose comme ceci:

server {
  listen      80;
  server_name _;

  location / {
    proxy_pass   http://mydomain.com:8080$request_uri;
    include      /etc/nginx/proxy.conf;
  }
 }

juste redirigé le port 80 pour 8000 et cela a bien fonctionné.

  

Est-ce que quelqu'un a une idée sur la façon d'avoir Node.js agir d'une manière Comet comprend. Ce serait vraiment sympa et vous me aider beaucoup.

Recources

utilisé

Pour utiliser faye Je dois installer le client comète, mais je veux utiliser celui fourni avec Nginx. C'est pourquoi je ne pas seulement utiliser faye. Celui nginx utilise est beaucoup plus optimzed.

supplémentaire

Était-ce utile?

La solution

votre lien il me semble que tout pub / sous travail est effectué par Nginx, le code Ruby est utilisé uniquement pour tester et envoyer des messages. Les clients utilisent encore long polling:

  

Dans le script ci-dessus, toutes les cinq secondes un éditeur émet un nouvel événement à notre serveur Nginx, qui à son tour, pousse les données à deux abonnés qui ont des liens de longue interrogation ouvert et attendent Les données. Une fois que le message est envoyé à chaque abonné, Nginx ferme les connexions et les clients alors immédiatement les rétablir pour attendre le prochain message disponible.

Nginx sert aussi simple retranslator pour les messages (configuration très intelligent BTW, merci pour le lien).

Pour faire court: les navigateurs ne sont pas capables de ce genre de connexion que vous essayez de faire. C'est ce que WebSockets ont été inventées pour.

Plus tard, je vais faire un peu de code dans Node.js d'utiliser cette configuration avec Nginx (Je suis intéressé aussi).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top