2011-08-15 19 views

Respuesta

52

Un latido es un pequeño mensaje enviado de un cliente a un servidor (o de un servidor a un cliente y de regreso al servidor) en intervalos periódicos para confirmar que el cliente todavía está activo y activo.

Por ejemplo, si tiene una aplicación Node.js que sirve una sala de chat, y un usuario no dice nada durante muchos minutos, no hay manera de saber si todavía están realmente conectados. Al enviar un sonido audible a un intervalo predeterminado (por ejemplo, cada 15 segundos), el cliente informa al servidor que todavía está allí. Si ha sido, por ejemplo, 20 segundos desde que el servidor recibió un latido de un cliente, es probable que se haya desconectado.

Esto es necesario porque cannot be guaranteed a clean connection termination over TCP --si un cliente se cuelga, o sucede algo más, no recibirá los paquetes de terminación del cliente, y el servidor no sabrá que el cliente se ha desconectado. Además, Socket.IO admite varios otros mecanismos (que no sean sockets TCP) para transferir datos, y en estos casos el cliente no enviará (o no) un mensaje de finalización al servidor.

De manera predeterminada, un cliente Socket.IO enviará un latido al servidor cada 15 segundos (intervalo de latidos), y si el servidor no ha oído desde el cliente en 20 segundos (tiempo de espera de los latidos del corazón ) se considerará al cliente desconectado.

No puedo pensar en muchos casos de uso promedio en los que probablemente no desee utilizar los latidos del corazón.

+1

¿Valdría la pena aclarar por qué se necesitan? ¿Por qué un servidor no detectaría la desconexión de un cliente mediante un evento/devolución de llamada 'onclose'? – leggetter

+0

Buena llamada, leggedter. Lo he actualizado un poco. –

+0

Actualización muy clara. Aclamaciones. – leggetter