javascript - Tiempo real con Node.js: WebSocket + Sondeo del lado del servidor vs. Sondeo del lado del cliente
Estoy desarrollando una aplicación que muestra datos en tiempo real (gráficos, etc.) desde Redis. Los datos actualizados llegan a Redis muy rápidamente (milisegundos). Por lo tanto, tendría sentido mostrar las actualizaciones tan a menudo como sea posible (siempre y cuando el ojo humano pueda notarlo).
Pila tecnológica:
- Node.js como servidor web
- Redis que almacena los datos
- JavaScript/HTML (AngularJS) como cliente
En este momento tengo sondeo del lado del cliente (solicitudes GET al servidor Node.js cada segundo que consulta Redis en busca de actualizaciones).
¿Hay alguna ventaja en hacer sondeo del lado del servidor en su lugar y exponer las actualizaciones a través de WebSocket? Sin embargo, cada conexión WebSocket requerirá un sondeo separado de Node.js (setInterval) ya que las consultas del cliente pueden ser diferentes. Pero no se espera tener más de 100 conexiones WebSocket.
¿Alguna ventaja/desventaja entre estos dos enfoques?
Respuesta #1
Si entendí correctamente tu pregunta: tienes menos de 100 usuarios que van a usar tu recurso simultáneamente, y quieres averiguar cuál puede ser una mejor manera de darles actualizaciones:
- los clientes solicitan actualizaciones mediante una solicitud de tiempo de espera (1 por segundo)
- El servidor hace un seguimiento de los clientes y cada vez que hay una actualización, les envía una actualización.
Creo que la mejor solución depende de los datos que tengas y de qué tan importante es para los usuarios obtener estos datos.
Optaría por el lado del cliente si:
- a la gente no le importa si sus datos están un poco desactualizados
- habría aproximadamente más de 1 actualización durante este 1 segundo
- No tengo tiempo para modificar el código
Optaría por el lado del servidor si:
- Es importante contar con datos actualizados y los usuarios no pueden tolerar retrasos
- Las actualizaciones no son tan frecuentes (si, por ejemplo, tenemos actualizaciones solo una vez por minuto, solo 1 de cada 60 solicitudes del lado del cliente sería útil. Y aquí el servidor solo emitirá una actualización)
Una cosa buena es que node.js ya tiene una excelente biblioteca socket.io para este propósito.