Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 31/01/17, 11:31:07
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

Bibliotecas de websockets

Creo que alguna vez hemos hablado de bibliotecas de websocket para Android, no estaba el panorama muy maduro y algunas incluso eran de desarrolladores independientes que ahora están abandonadas.

Sin embargo desde el mes pasado la biblioteca OkHttp de Square incluye soporte websockets de manera estable y en teoría han pulido la mayoría de bugs que había. El API es muy sencilla, basta darle la URL y registrar un listener que te avisa de los cambios de estado y cuando se reciben mensajes (una lástima que no avise en el hilo principal a todo esto). Es compatible tanto con Java como con Android 2.3 o superior

Para el lado del servidor siempre he sido fan de Netty pero para algunas cosas el nivel de abstracción es bajo (los websockets de hecho...), así que estoy migrando a Vert.x que está basado en Netty pero añade bastante funcionalidad y viene de serie con bus de eventos y drivers asíncronos para bases de datos.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita


  #2  
Viejo 31/01/17, 15:49:45
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
Soy fan del stack I/O de Square (Okio, OkHttp, Retrofit y Picasso), pero la verdad es que nunca he necesitado utilizar los websockets en Android, aunque desde luego OkHttp sería mi primera opción sin dudarlo.

Para web + NodeJS (no soy muy fan de la JVM en servidor, demasiado pesada) hasta ahora me ha dado muy buen resultado Socket.io, extremadamente fácil de utilizar. Además dan soporte nativo en Android:
http://socket.io/blog/native-socket-io-and-android

 Cita: Originalmente Escrito por mocelet Ver Mensaje
una lástima que no avise en el hilo principal a todo esto
Te tocará crear a ti el método que lo ejecute en primer plano:
http://stackoverflow.com/questions/1...another-thread

También puedes usar esta librería, que hace el tema de threading algo más limpio:
https://github.com/Arasthel/AsyncJobLibrary

Código:
AsyncJob.doOnMainThread(new AsyncJob.OnMainThreadJob() {
    @override
    public void doInUIThread() {
        Toast.makeText(context, "Result was: "+ result, Toast.LENGTH_SHORT).show();
    }
});
De todos modos no me extrañaría que en un futuro OkHttp lo soportara. Siempre puedes abrir un issue y comentarlo: https://github.com/square/okhttp/issues
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 31/01/17, 16:36:29
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

Gracias, a mí me pasa lo mismo con javascript (no soy muy fan jeje).

Lo de que no avise en el hilo principal supongo que lo hacen porque ya tienen un eventbus (Otto creo que se llama) para esas cosas. Y, bueno, como estoy usando Kotlin que tiene lambdas con poner delante runOnUiThread ya está. Si tuviera que escribir new Runnable y toda la parafernalia igual me molestaba más tanta "verbosidad"
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #4  
Viejo 31/01/17, 23:22:31
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Otto creo que se llama
Otto está deprecated (aparte de que el patrón EventBus en Android es muy fácil de abusar)
Se ha sustituido sobretodo por RxJava (y las extensiones de RxAndroid). No es fácil cogerle el truco al principio, pero cuando hace "click" es espectacular la componibilidad que da.

 Cita: Originalmente Escrito por mocelet Ver Mensaje
Kotlin
Otro que se ha pasado al lado menos verbose de la vida


Volviendo al tema del hilo, finalmente le das el visto bueno a OkHttp para Websockets?
Por si algún día lo necesito
Responder Con Cita
  #5  
Viejo 01/02/17, 09:19:29
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

 Cita: Originalmente Escrito por Dexafree Ver Mensaje
cuando hace "click" es espectacular la componibilidad que da
Me imagino, con Swift tuve el "click" previo de olvidarme de los bucles con condicionales y pensar en transformar colecciones (y fue el culpable de ver Kotlin con otros ojos).

RxJava no lo he usado pero ciertamente parece muy potente si consigues ver/modelar la funcionalidad como transformaciones de flujos de eventos.

 Cita: Originalmente Escrito por Dexafree Ver Mensaje
le das el visto bueno a OkHttp para Websockets?
Es el que más confianza me inspira ahora mismo y viendo los issues parece que hay mucha gente que lo usa en producción desde hace tiempo (los de Square dicen que la funcionalidad llevaba tres años en la biblioteca hasta marcarla como estable).

EDIT: Sobre socket.io, acabo de leer esto https://github.com/rethinkdb/horizon/issues/413 y lo ponen a caer de un burro @Dexafree En su día sí que era una solución, pero ahora que todo soporta websockets mejor usarlos y olvidarse de fallbacks.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!

Última edición por mocelet Día 01/02/17 a las 17:52:38.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 07:20:51 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /