Cómo hacer HttpResponse trabajo más rápido?
Estoy trabajando en un proyecto en el que "tengo que obtener 4096 bytes de datos al servidor" de "servidor" cada "entre 1 milisegundo a 10 milisegundos". Pero es "tomar demasiado tiempo" es decir "alrededor de 300ms – 700ms "Que hace que mi aplicación pierda datos.
Estoy usando el siguiente fragmento
- ¿Cómo obtengo una variable en otra actividad?
- ¿Cómo puedo eliminar caracteres no reconocidos que vuelven de un servicio web?
- Java - java.lang.IllegalStateException: No se pudo leer la fila 0, col -1 de CursorWindow
- Transferencia de datos Bluetooth entre dos dispositivos Android
- Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
HttpClient client = new DefaultHttpClient(); HttpPost request = new HttpPost("http://192.168.1.40/ping"); HttpResponse response = client.execute(request);
El HttpResponse está tomando solamente demasiado tiempo es decir alrededor 300ms – 700ms.
¿Cómo puedo obtener respuesta más rápido?
En lugar de esto, ¿qué más puedo usar para obtener una respuesta de sever más rápido que esto?
Por favor, hágamelo saber cualquier solución o manera de resolverlo.
He hecho google, pasó por otras formas como DataOutputStream
y ByteOutputStream
pero no uso de esto, también toma demasiado tiempo, a continuación, HttpResponse
.
La ayuda será apreciada.
- ¿Cuáles son las unidades de temperatura y voltaje de la batería cuando Intent.BATTERY_ACTION_CHANGED en el dispositivo android?
- ¿Cuál es el mejor entre AlarmManager y Handler + WakeLock?
- La disposición del cajón no se cierra en la parte posterior presionada (dependiendo del soporte-v4 lib)
- ¿Por qué el SDK de Android necesita un JDK?
- Rxjava2 + Retrofit2 + Android. La mejor manera de hacer cientos de llamadas de red
- Recupere el botón por findViewWithTag ¿no trabajando?
- Pregunta simple sobre java SimpleDateFormat
- OpenCV FeatureDetector
Esto no es posible. Usted está recreando una conexión cada vez.
Es necesario mantener una conexión persistente con el servidor. Intente crear una conexión http persistente.
Si eso no funciona, puede intentar enviar paquetes udp crudos (o cualquier otra cosa). Será más difícil, pero tomará menos tiempo.
Antes de que usted pueda hacer las respuestas más rápido, usted va a tener que investigar y entender por qué actualmente están tomando mucho tiempo. A grandes rasgos, podría ser:
- El cliente toma mucho tiempo para crear la solicitud y / o preocuparse del resultado (parece improbable …)
- Una pila de protocolos de red androide lenta
- Un problema con su red local (por ejemplo, WiFi) o su proveedor de telecomunicaciones
- Un servidor congestionado / sobrecargado o una red del lado del servidor, o
- Algo pesimista en la implementación del servidor.
Hacer cosas como:
- Pruebe la solicitud desde un navegador web en una PC convencional y utilice las funciones de desarrollador web del navegador para tratar de averiguar si / por qué la solicitud tarda mucho …
- Busque en los registros del lado del servidor y / o supervise la información de carga y temporización de solicitudes
- Otras sugerencias por favor
Implementar SPDY podría ayudar, pero es poco probable que cambie los tiempos de respuesta en el orden de 500ms a un par de decenas de milisegundos. El problema parece más fundamental que "HTTP es viejo y lento". Y el mismo razonamiento se aplica a todas las otras sugerencias que la gente ha hecho.
La respuesta de @sheldonCooper es correcta si el servidor habilita SPDY. También puede agregar compresión Gzip. Se ha añadido a todas las solicitudes después de GingerBread, pero podría agregarse a versiones anteriores de SDK: http://android-developers.blogspot.fr/2011/09/androids-http-clients.html
Utilice el protocolo SPDY . Esto mejoraría su tiempo de respuesta.
Creo que en su caso puede utilizar websockets para que no tendría que crear una conexión cada vez y la conexión en vivo está disponible cada vez.
- Archivo de datos de Jacoco no legible para Android en TeamCity
- ¿Cómo hacer que AndroidScheduler.mainThread funcione con Scala Observable?