Estoy trabajando con socket.io y node.js. Estoy teniendo problemas para rastrear qué usuarios están en línea debido a los pocos segundos de retraso antes de que el socket IO reconozca que un cliente de XHR-Polling se ha desconectado.Socket.IO: Retraso XHR-Polling en la desconexión
Si un cliente XHR-Polling actualiza la página, su nuevo mensaje de conexión parece preceder a su mensaje de desconexión. Esto causa confusión al intentar rastrear qué usuarios están en línea.
Una solución podría ser detectar el método de transporte en el servidor y retrasar la conexión para los clientes de XHR-Polling para garantizar que las funciones de desconexión se hayan ejecutado primero.
¿Alguien ha tenido alguna experiencia al respecto?
¿Por qué no puede suponer que un usuario está en línea hasta que se dispare el evento de desconexión? Estoy de acuerdo en que habrá una superposición en la que parecerá que dos usuarios están en línea cuando solo uno lo está, pero si identifica las conexiones de acuerdo con ciertos ID de usuario, entonces no debería haber un problema. Y si no, el peor de los casos es que un usuario aparezca en línea durante unos segundos más. No creo que agregar un retraso sea una forma particularmente sólida de realizar una buena detección de desconexión. – davin
Estoy de acuerdo con Davin.Utilizo esos "esta persona está en línea" como las mejores estimaciones de que la persona está en línea en ese momento, no como una ley. Si quiero saber lo que están haciendo, los llamaré. – jcolebrand
Esto es algo para lo que hemos agregado soporte en [Pusher] (http://pusher.com) y lo hacemos utilizando algo llamado [Canales de presencia] (http://pusher.com/docs/presence). – leggetter