Pregunta

¿Alguien sabe de una manera o tal vez creo que es posible conectar con Node.js Nginx módulo http empuje para mantener una conexión permanente entre el cliente y el navegador.

Soy nuevo cometa así que no entienden la publicación etc tal vez alguien me puede ayudar con esto.

Lo que he creado hasta ahora es la siguiente. He descargado el plugin y jQuery.comet juego hasta la siguiente código básico:

  

Cliente JavaScript

<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>

Lo que puedo entender de esto es que el cliente se mantendrá en la escucha a la url seguido de / emisión / sub = GetIt. Cuando hay un mensaje que se disparará updateFeed.

bastante básico y comprensible de la OMI.

  

Nginx http empujar el módulo de configuración

aplicación default_type / octet-stream; sendfile en; keepalive_timeout 65; push_authorized_channels_only apagado;

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 ahora esto dice nginx para escuchar en el puerto 80 para todas las llamadas a / emisión / sub y se devolverá cualquier respuesta enviada a / emisión / pub.

También bastante básico. Esta parte no es tan difícil de entender, y está bien documentado en internet. La mayoría de las veces no es un rubí o un archivo PHP detrás de esto que hace la cobertura de transmisión.

  

Mi idea es tener Node.js radiodifusión /broadcast/pub. Creo que esto me deja persistent streaming data desde el servidor al cliente sin romper la conexión. He probado el enfoque a largo bucle sondeo con la solicitud, pero creo que esto será más eficiente.

O es que esto no va a funcionar.

  

Node.js archivo

Ahora para crear las Node.js estoy perdido. En primer lugar todo lo que no saben cómo pasar a Node.js trabajo de esta manera.

La configuración que utilicé para sondeo largo es el siguiente:

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);

Este escucha en el puerto 8000 y simplemente escribe en la variable de respuesta.

Para sondeo largo de mi nginx.config parecía algo como esto:

server {
  listen      80;
  server_name _;

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

Esto se redirige el puerto 80 para 8000 y esta muy bien trabajado.

  

¿Alguien tiene una idea sobre cómo tener Node.js actuar de una manera Comet entiende. Sería muy bueno y que me va a ayudar mucho.

Recources

utiliza

Para usar Faye tengo que instalar el cliente cometa, pero quiero utilizar el suministrado con Nginx. Es por eso que no sólo tiene que utilizar Faye. Los usos uno nginx es mucho más optimzed.

adicional

¿Fue útil?

Solución

En cuanto a su enlace me parece que todo el trabajo pub / sub se hace por Nginx, código Ruby se utiliza sólo para probarlo y enviar mensajes. Los clientes siguen utilizando sondeo largo:

  

En el guión anterior, cada cinco segundos un editor emite un nuevo evento a nuestro servidor Nginx, que a su vez, empuja los datos para dos abonados que tienen conexiones de larga-electorales abren y están esperando datos. Una vez que el mensaje se envía a cada suscriptor, Nginx cierra sus conexiones y los clientes inmediatamente a restablecer para esperar a la siguiente mensaje disponible.

Nginx sirve como retranslator simple para mensajes (configuración muy inteligente por cierto, gracias por el enlace).

Para decirlo corto: navegadores no son capaces de este tipo de conexión que tratando de hacer. Esto es lo que WebSockets fueron inventados para.

Más tarde voy a hacer un poco de código en Node.js para usar esta configuración con Nginx (estoy interesado en él también).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top