2012-01-29 24 views
9

Estoy haciendo una aplicación para Android en PhoneGap. Lo que trato de hacer es dejar que la aplicación hable con mi servidor Node.js a través de WebSockets. Mi servidor Node.js usa Socket.IO que automáticamente vuelve a sondear cuando abro la aplicación, a diferencia de la aplicación de escritorio de Chrome que felizmente abre un WebSocket y se comunica a través de él muy bien.WebSockets para Android en la aplicación Phonegap con Node.js/Socket.IO server & client

He leído this blogpost sobre la integración de la API WebSocket real con Phonegap. El problema es que no anulo manualmente las funciones 'onConnect, onMessage', sino que Socket.IO hace todo eso por mí.

¿Hay alguna forma de integrar WebSockets en mi aplicación Android Phonegap?

Respuesta

5

Respuesta corta: Cordova vista web no es compatible con WebSockets y socket.io no se conecta a los clientes basados ​​en estándares WebSocket.

Para su cliente, todavía parece que si desea websockets reales, necesita utilizar un complemento de Cordova que es específico de una compilación de Android o iOS. Pruebe this search, que incluye repo anismiles para un complemento de Android, el mismo blogger al que hace referencia el OP.

Teniendo esto en cuenta, socket.io no funcionará para su servidor. Desafortunadamente, el servidor socket.io no admite la conexión a clientes con una conexión websocket basada en estándares Html5, debe usar su biblioteca cliente. Como has visto, no puedes usar la biblioteca de sus clientes en Córdoba ... bueno, puedes recurrir a las encuestas.

Así que ahora su cliente websocket es un complemento Cordova basado en estándares, necesita un servidor que admita una conexión de websocket basada en estándares. Debe echar un vistazo a SockJs, Worlize, Miksago o Einaros. Hay otros. Actualmente estoy usando Worlize.

Otra cosa a tener en cuenta es que hay una breve lista de hosts en la nube que actualmente soportan conexiones websocket verdaderas. Recomiendo DotCloud o Nodejitsu.

Si esto responde a su pregunta, por favor haga clic en la marca de verificación :)

+0

Respuesta perfecta. Gracias por tomarse el trabajo! :) –

+0

No entiendo muy bien esta respuesta. Me gustaría utilizar phone gap y node.js con mi aplicación de Android, pero usted está diciendo que la geolocalización html5 y los sockets web no son compatibles con la brecha telefónica ... o? –

+0

Hola, no, no mencioné la geolocalización, que funciona bien en PhoneGap. PhoneGap utiliza un control WebView incorporado que es un navegador web incorporado para ejecutar su código Html y Js como una aplicación. Ese navegador incrustado no tiene la capacidad Html5 WebSocket, por lo que debe usar un complemento independiente como [este para Android] (https://github.com/jnydal/android-phonegap-websocket) o [este para iOS] (https://github.com/remy/PhoneGap-Plugin-WebSocket) para WebSocket verdadero. –

0

Este repositorio se integrarán en PhoneGap muy pronto (al menos suena como que en el readme)

También también proporciona los pasos para hacer tomas web trabajan en PhoneGap/androide.

Echale un vistazo: https://github.com/anismiles/websocket-android-phonegap

+0

podría not've dedicado el tiempo suficiente para pedir mi pregunta pero sé de este repositorio y he intentado ya. Lo que sucede es que la biblioteca Socket.IO no me deja ninguna opción de anular los métodos socket.onmessage etc. Lo que a su vez hace que sea imposible usar este repositorio con mi código. Quería saber si existe la posibilidad de implementar WebSockets en combinación con una aplicación de cliente Android Phonegap Socket.IO. –

+0

También podría no haber sido lo suficientemente meticuloso para investigar si esto realmente cumple con todos sus criterios :) –

0

Aquí es otra websockets cliente de Android, que estoy evaluando actualmente.

http://jwebsocket.org/mobile/android/android_part1.htm

me temo que no tengo idea de si va a ser útil para un proyecto PhoneGap, al no estar familiarizados con ella.

Phonegap necesitaría permitirle incorporar una biblioteca java externa en su proyecto y usted necesitaría construir una interfaz para ella en java.

Cuestiones relacionadas