2015-08-04 47 views
27

Sto sviluppando il backend di messaggistica WebSocket utilizzando Spring WebSockets, che utilizza il protocollo SockJS + STOMP. Il motivo per cui non utilizzare i WebSocket è che avrò bisogno di sfruttare l'integrazione di sicurezza che SockJS fornisce in Spring WebSockets e anche altre funzionalità di SockJS, come stanze, abbonamenti, ecc. Mi chiedevo se questa fosse una buona opzione da usare in modo che le app mobili (iOS e Android) e Web client possano connettersi facilmente al server di back-end ed eseguire la messaggistica. Se sì, allora quali librerie posso usare per iOS e Android.Connessione con client iOS e Android a SockJS Backend

Su SockJS GitHub page elencano anche le librerie client disponibili, ma non iOS né Android. Quindi, mi chiedo se SockJS valga la pena di usarlo solo per questo.

Ho trovato che per la client iOS Primus-Objc (GitHub page) la libreria che afferma che è possibile connettersi a native WebSockets, Socket.IO, SockJS or perhaps engine.io. è una dichiarazione vera? E se l'evento è vero, per quanto riguarda la qualità di quella libreria?

E se è possibile utilizzare SockJS sul retro, sarebbe anche possibile mostrare un codice di esempio per iOS e Android in modo da poter eseguire un proof of concept sui dispositivi mobili?

Se SockJS non è una buona opzione per me, sarebbe meglio che costruire la mia app di messaggistica con Socket.io + Node.js (utilizzando JavaScript). Socket.io mi sembra abbia tutte le librerie client necessarie per iOS (official library by Socket.IO guys) e Android (official library by Socket.IO guys).

Un'altra opzione può essere quella di utilizzare la libreria Netty-Socket.io e creare manualmente ciascun endpoint senza alcun aiuto da Spring Framework (che sto considerando di utilizzare) ma c'è una piccola sfida che dovrò affrontare, cioè la sicurezza. Somebody actually already tried to do it (the same author asking question on the official Netty-Socket.IO Github page) ma sembra che non abbia avuto fortuna nel risolverlo.

+0

riferirsi a questo blog http://www.elabs.se/blog/66-using-websockets-in-native-ios-and-android-apps –

+0

anche, dare un'occhiata su https://github.com/ elabs/mobile-websocket-example –

+1

perché non usare semplicemente cometd? Ha anche il supporto per Android ... –

risposta

4
+1

Esistono esempi di SockJS e iOS che comunicano tra loro e l'utente è autenticato? – Maksim

+0

Il collegamento n. 1 è un post di blog correlato al codice sorgente nel collegamento n. Stanno facendo semplicemente un semplice esempio di "Hello World" lì. In Link # 2 stanno offrendo di utilizzare alcuni SDK di terze parti. Hai bisogno di qualcosa di concreto e ufficiale relativo a SockJS, dispositivi mobili e protocollo Stomp. – Maksim

0

SockJS può essere interessante perché fornisce i trasporti non-ws . L'uso di WebSockets potrebbe non essere possibile in tutte le situazioni.

Ci

è cliente un cross-platform SockJs del OpenFL project:

https://github.com/jeremyfa/openfl-sockjs

Non testato come funziona, ma almeno per Android che sta utilizzando JavaScript dall'interno WebView, quindi non dovrebbe essere diverso da quello Uno JavaScript. Ancora una volta, non è chiaro quanto strettamente sia accoppiato con OpenFL, ma l'approccio all'uso di WebView e del client SockJS di serie potrebbe probabilmente essere riutilizzato.

9

Forse è passato più di un anno da quando è stata posta la domanda. Ma, perché sta ottenendo i primi risultati quando si usa Google per SockJS + Android. Quindi, sto postando la mia risposta.

Dalla mia esperienza con un progetto recente su cui ho lavorato, siamo stati in grado di utilizzare un client STOMP - like the one here - per connettersi al back-end Spring Websocket dall'app Android nativa.

E dal browser, è ancora possibile utilizzare il client SockJS per ottenere compatibilità tra browser e websocket con fallback.

Una nota di dire che quando si utilizza solo client STOMP per connettersi al websocket nativa URL sarà qualcosa di simile a ws: // mydomain/SockJSEndpoint/websocket, e quando si utilizza client SockJS dal browser l'URL sarà come http: // mydomain/SockJSEndpoint.

+1

Grazie per aver condiviso questo! –

0

Li abbiamo testati, sia Android-client (link) è stato dato da @Amr K. Ismail e

questo iOS-client (link) sono adatti con Spring-SockJS-Server che ha STOMP.