2012-02-11 18 views
10

Tengo un servidor con Node.js socket.io:¿Qué hace la configuración de "xhr-polling" en socket.io?

var io = require('socket.io').listen(app); 

// assuming io is the Socket.IO server object 
io.configure(function() { 
     io.set("transports", ["xhr-polling"]); 
     io.set("polling duration", 10); 
    }); 

io.sockets.on('connection', function(socket){ 
    console.log('connected: %s', socket.id); 
    ... 
} 

Con xhr-sondeo y una duración de 10 segundos de votación, ¿significa esto que una nueva conexión será invocado cada 10 segundos? Si es así, ¿cómo puedo hacer un seguimiento de los usuarios si se desconectan? Estoy ejecutando node.js en heroku.

Respuesta

15

xhr-polling significa que su servidor esperará 10 segundos en cualquier GET de POST recibido que no tenga respuesta antes de responder en lugar de devolver una respuesta vacía. Entonces, si su servidor no tiene información para devolver después de 10 segundos, responderá con una respuesta vacía. Puede leer más aquí: Long polling

Yo personalmente uso xhr-sondeo como opción de reserva de WebSockets en una aplicación en nodejitsu (otro nodo de alojamiento como Heroku) y está trabajando muy bien. Lo único es el evento "en conexión" que dura aproximadamente 3-8 segundos en lugar de ser instantáneo como con mi aplicación WebSocket.

No se crea una nueva conexión en cada nueva encuesta, solo es una manera de enviar solo una GET o POST al servidor cada 10 segundos, en lugar de tener que sondear el servidor cada 0,5 segundos para tener una aplicación "en tiempo real". Si el servidor responde en menos de 10 segundos, se enviará otra encuesta para preparar la siguiente respuesta.

Espero que esto te ayude. Ten un buen día.

3

socket.io reconecta clientes automáticamente.

Cuestiones relacionadas