La mejor manera de evitar los efectos del algoritmo Nagle usando webSockets?
Estoy utilizando webSockets para conectar un cliente javascript webSocket a un java webSocketServer (desde una aplicación de Android), utilizando la biblioteca Java-WebSocket . La aplicación para Android envía un pequeño mensaje cada pocos milisegundos al cliente javascript.
Utilizando el enfoque básico (e intuitivo) para esta situación, el retardo entre mensajes recibidos, medido dentro del javascript Cliente muestra (aproximadamente) el siguiente patrón: 200 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 Ms, 200 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 200 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms, 0,1 ms …
- Consumo de energía de WebSockets
- Aplicación de chat: qué tecnología es mejor para implementar aplicación de chat en Android
- ¿Puedo conectarme con WebSocket en una aplicación de Android?
- Error de Java en el servidor WebSocket
- WebSockets para Android y aplicaciones de iOS
Este es el efecto del algoritmo Nagle, que se establece de forma predeterminada, agrupando varios mensajes antes de enviarlos.
Puesto que no he encontrado una manera de garantizar su desactivación, sigo el enfoque propuesto en esta vieja pregunta, enviando un mensaje de acuse de recibo del cliente al servidor, y el sistema se comporta correctamente, pero como el mensaje de reconocimiento no tiene ningún propósito real Es más un hack), debe ser evitado.
La pregunta es, ¿esto sigue siendo la mejor solución a este problema? ¿Conoce alguna manera de evitar el agolpamiento?
Gracias.
- NodeJS + SocketIO empuja a la aplicación para móviles
- Websocket en Android 4.4 con Phonegap
- Grails 2.4 Spring Websocket SockJs Java Android Cliente
- Biblioteca de Android para WSS (Secure Web Socket)
- Android websocket sockjs cliente para java primavera basada webserver
- WebSocket soportado en Android Stock Browser o no?
- Conexión de cliente a servidor en aplicaciones de chat como Viber o Telegram
- Cómo cerrar / volver a intentar / administrar un WebSocket con Koush AndroidAsync?
Debido a que no parecen estar presentes en la biblioteca utilizada mecanismos flush o setTCPNoDelay, y no se han propuesto otras soluciones, parece que la solución de mensaje de confirmación sigue siendo válida como la mejor solución a este problema.
- Obtener la entrada de voz de Android Wearable
- ¿Cuál es la acción correcta de Spotify para un filtro de intenciones ahora en reproducción?