Estoy construyendo un programa de sincronización de archivos (a diferencia de Dropbox) usando node.js en ambos extremos. Necesito tener potencialmente miles de clientes que solicitan datos al mismo tiempo.HTTP vs Websockets con respecto a la sobrecarga
Aquí es mi sistema actual:
- servidor empuja notificaciones al cliente a través de un WebSocket (archivo ha sido actualizado)
- cliente en cola de descargas y realiza una solicitud HTTP cuando está inactivo
I estará publicando datos en fragmentos comprimidos de, digamos, 50 MB cada uno, por lo que la carga de solicitud de HTTP (encabezados) es insignificante.
Si tuviera que utilizar WebSockets para las solicitudes y notificaciones empuje, ¿habría:
- notables mejoras generales de velocidad? (latencia reducida, autenticación, etc.)
- ¿Sobrecarga adicional en el servidor para mantener las conexiones abiertas?
- Problemas con el empuje de datos binarios?
Creo que necesito que las notificaciones se envíen a través de un websocket específico porque no quiero que estén en cola en el servidor mientras se está realizando una descarga (mucha sobrecarga).
Nota: Estos websockets estarán abiertos a largo plazo, siempre que el sistema del cliente esté encendido.
EDITAR: Voy a utilizar los websockets en un servidor http diferente en diferentes puertos para moverlos a diferentes núcleos de CPU. Yo podría tener potencialmente miles (si no cientos de miles) de websockets concurrentes abiertos ...
"using node.js en ambos extremos" - de modo que tanto el cliente como el servidor tendrían instalado node.js? ¿El cliente no será un navegador, por ejemplo? – yojimbo87
Sí, no hay navegador. Tendré control total sobre las solicitudes y respuestas. Será una aplicación de escritorio que se ejecuta en segundo plano. servidor HTTP simple, cliente HTTP simple. – tjameson