¿Cuál es la mejor estrategia para que un cliente tranquilo haga un seguimiento de los clientes en línea?

No debe considerar las API REST como lo último para todas sus necesidades. Puede considerar sockets, udp, etc. si necesita una conexión persistente.

Aún así, si va a REST, los latidos del corazón no violan las pautas de REST. Cada latido / ping extendería el estado del cliente a en línea durante otro minuto (se puede disminuir para administrar la carga) más o menos. Además, entienda qué significa sin estado El servicio web es con estado o sin estado: ¿DESCANSO, JABÓN? – GopalDas.Org

Si las sesiones se almacenan en la memoria de un servicio web, el servicio no es apátrida, escalable ni REST ya que cada punto final puede tener una respuesta diferente. En este caso, sin embargo, esto se puede traducir ya que la API heartbeat siempre devuelve 200 cuando actualiza el estado del cliente. y la API de estado del cliente siempre devuelve 200 para cualquier estado (en línea, ausente, fuera de línea). A diferencia de un sistema de transacciones en un banco en el que una API de transacción no Restful puede devolver 200,400,500 dependiendo de cuál sea el estado del cliente (conectado, visto por última vez, fuera de línea).

Y así sucesivamente, cualquier punto final de la API en un servicio Restful nunca debe devolver ningún código, excepto 200, dependiendo del estado del cliente en línea y fuera de línea.

La escalabilidad tiene muy poco que ver con los latidos del corazón y depende de dónde esté almacenado el estado del cliente. Actualizar registros sql o mongo es costoso para algo como esto. Considere usar redis o memcache.

El sondeo o la característica que está implementando generalmente se debe considerar por encima de la carga promedio en un servidor web La arquitectura de WhatsApp Facebook compró por $ 19 mil millones – Alta escalabilidad –

Hay otras formas de hacerlo, pero depende de su cliente. Si puede confiar en que el cliente enviará una solicitud de CC, puede usarlos para actualizar el estado del cliente y dejar de sondear / latidos.

Puede haber algunas formas inteligentes de usar HTTP Cache que podrían servir como caché liviano, eliminando la necesidad de redis o caché de memoria interna.

Nota: Los enchufes también envían latidos internos.

More Interesting

¿Qué herramientas, de código abierto o comerciales, han aumentado significativamente su productividad como ingeniero de software o administrador de sistemas?

¿Las aplicaciones de Facebook, Twitter, Skype, Quora, Instagram, etc. son solo un conjunto de programas?

¿Cómo equilibran los buenos desarrolladores su trabajo de consultoría con el aprendizaje constante? ¿Cómo hacen tiempo para experimentar con nuevas herramientas y marcos? ¿Cómo se mantienen motivados, aprendiendo y evitando quedarse atascados de hacer lo mismo?

¿Puedo tener una startup o ser un desarrollador de software independiente mientras soy un oficial de IAS?

¿Solo un ingeniero de software puede iniciar una nueva empresa?

¿Cómo debe tratar un gerente de software con un equipo que siempre se niega a implementar nuevas ideas y da infinitas excusas de por qué no se puede hacer?

¿Cuál es el problema sin resolver más difícil en el aprendizaje automático profundo, esp. ¿visión por computador?

¿Cómo puede probar qué producto de software es 'mejor' para una competencia competitiva de desarrollo de software?

¿Hasta qué punto en el proceso de aprendizaje de ruby ​​un codificador principiante comenzará a trabajar con cosas que se parecen a la web moderna (usuarios, perfiles, mensajes, publicaciones), en oposición a las variables y cadenas iniciales en las ventanas de terminal negras?

¿Cuáles son las desventajas de las pruebas colectivas?

¿Cuáles son buenos ejemplos de mapas de experiencia (de productos)?

¿Cómo encuentras trabajo como programador independiente?

¿Qué quiere decir con ciclos de vida de desarrollo de software?

¿Cuáles son algunas herramientas efectivas para la estimación de historias y la planificación de lanzamientos?

Veo muchos desarrolladores que muestran su configuración con varios monitores. ¿Es realmente útil / necesario trabajar con más de un monitor?