![]() |
|
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 |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
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. |
|
#2
|
||||
|
||||
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 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(); } }); |
Gracias de parte de: | ||
#3
|
||||
|
||||
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" ![]() |
#4
|
||||
|
||||
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. 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 ![]() |
#5
|
||||
|
||||
Cita:
RxJava no lo he usado pero ciertamente parece muy potente si consigues ver/modelar la funcionalidad como transformaciones de flujos de eventos. 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 ![]() Última edición por mocelet Día 01/02/17 a las 17:52:38 |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
Herramientas | |
|
|
Hora actual: 15:17:36 (GMT +2)
HTCMania: líderes desde el 2007