2012-01-29 3 views
9

Sto creando un'applicazione Android in PhoneGap. Quello che sto cercando di fare è lasciare che l'applicazione parli al mio server Node.js attraverso WebSockets. Il mio server Node.js utilizza Socket.IO che torna automaticamente al polling quando apro l'applicazione, in contrasto con l'applicazione desktop di Chrome che apre felicemente un WebSocket e comunica attraverso di esso semplicemente.WebSockets per Android in applicazione PhoneGap con Node.js/Socket.IO server e client

Ho letto this blogpost sull'integrazione dell'API WebSocket con PhoneGap. Il problema è che non sto eseguendo manualmente le funzioni "onConnect, onMessage", invece Socket.IO fa tutto questo per me.

C'è un modo per integrare WebSockets nella mia applicazione Android PhoneGap?

risposta

5

Risposta breve: Cordova WebView non supporta WebSockets e socket.io non si connette al client basati su standard websocket.

Per il client, sembra ancora che se si desidera una vera web socket, è necessario utilizzare un plug-in Cordova specifico per una build Android o una build iOS. Prova a this search, che include il repository di anismi per un plug-in Android, lo stesso blogger a cui fa riferimento l'OP.

Quindi con questo in mente, socket.io non funzionerà per il tuo server. Sfortunatamente, il server socket.io non supporta la connessione ai client con una connessione websocket basata su standard Html5, devi usare la loro libreria client. Come hai visto, non puoi usare la loro libreria client in Cordova ... beh, puoi, sarà solo una ricaduta per il polling.

Così ora il tuo client websocket è un plug-in Cordova basato su standard, è necessario un server che supporti una connessione Websocket basata su standard. Dare un'occhiata a SockJs, Worlize, Miksago o Einaros. Ce ne sono altri Attualmente sto usando Worlize.

Un'altra cosa da tenere a mente è che esiste un breve elenco di host cloud che attualmente supportano le connessioni websocket. Raccomando DotCloud o Nodejitsu.

Se questo risponde alla tua domanda si prega di fare clic sul segno di spunta :)

+0

Risposta perfetta. Grazie per lo sforzo! :) –

+0

Non capisco questa risposta. Mi piacerebbe utilizzare il telefono gap e node.js con la mia app per Android, ma stai dicendo che la geolocalizzazione e le prese web html5 non sono compatibili con il divario telefonico .. o? –

+0

Ciao, no, non ho menzionato la geolocalizzazione, che funziona bene in PhoneGap. PhoneGap utilizza un controllo WebView incorporato che è un browser Web incorporato per eseguire il codice Html e Js come app. Quel browser incorporato non ha la capacità Html5 WebSocket, quindi è necessario utilizzare un plugin separato come [questo per Android] (https://github.com/jnydal/android-phonegap-websocket) o [questo per iOS] (https://github.com/remy/PhoneGap-Plugin-WebSocket) per true WebSocket. –

0

Questo repository saranno integrati in PhoneGap molto presto (almeno suona come che nel readme)

Inoltre fornisce inoltre i passaggi per fare i socket web lavorare in PhoneGap/Android.

Date un'occhiata: https://github.com/anismiles/websocket-android-phonegap

+0

potrei not've stato abbastanza approfondito nel porre la mia domanda, ma so di questo repository e ho provato già. Il fatto è che la libreria Socket.IO non mi lascia alcuna scelta di sovrascrivere i metodi socket.onmessage, ecc. Che a sua volta, rende impossibile utilizzare questo repository con il mio codice. Volevo sapere se esiste la possibilità di implementare WebSockets in combinazione con un'applicazione client Android PhoneGap Socket.IO. –

+0

Inoltre, potrei non essere stato abbastanza accurato nella ricerca se questo soddisfi tutti i tuoi criteri :) –

0

Ecco un altro WebSockets client Android, che attualmente sto valutando.

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

ho paura non ho idea se sarà utile per un progetto PhoneGap, non avere familiarità con esso.

PhoneGap dovrebbe consentire di incorporare una libreria java esterna nel progetto e sarà necessario creare un'interfaccia per esso in java.