web-dev-qa-db-fra.com

Connectez-vous avec les clients iOS et Android à SockJS Backend

Je développe le backend de messagerie WebSocket en utilisant Spring WebSockets , qui utilise le protocole SockJS + STOMP. La raison pour laquelle il est préférable de ne pas utiliser de simples WebSockets est parce que je devrai tirer parti de l'intégration de sécurité fournie par SockJS dans Spring WebSockets, ainsi que d'autres fonctionnalités intéressantes de SockJS, telles que des salles, des abonnements, etc. de sorte que les applications client mobiles (iOS et Android) et Web puissent facilement se connecter au serveur principal et effectuer la messagerie. Si oui, quelles bibliothèques puis-je utiliser pour iOS et Android?.

Sur Page SockJS GitHub ils répertorient également les bibliothèques de clients disponibles, mais ni iOS ni Android. Donc, je me demande si SockJS vaut même la peine d’être utilisé simplement à cause de cela.

J'ai trouvé que pour le client iOS Primus-Objc ( la page GitHub ), une bibliothèque affirmant pouvoir se connecter à native WebSockets, Socket.IO, SockJS or perhaps engine.io. est-ce une affirmation vraie? Et si c'est vrai, qu'en est-il de la qualité de cette bibliothèque?

Et si nous pouvions utiliser SockJS à l’arrière, serait-il possible de montrer un exemple de code pour iOS et Android afin que je puisse effectuer une preuve de concept sur des appareils mobiles?

Si SockJS n'est pas une bonne option pour moi, serait-il préférable de créer mon application de messagerie avec Socket.io + Node.js (en utilisant JavaScript). Socket.io me semble avoir toutes les bibliothèques clientes nécessaires pour iOS ( bibliothèque officielle par les gars de Socket.IO ) et Android ( bibliothèque officielle par les gars de Socket.IO ). 

Une autre option peut être d’utiliser Netty-Socket.io library et de construire chaque terminal manuellement, sans aucune aide de Spring Framework (que j’envisage d’utiliser), mais il ya un petit défi que je devrai relever, à savoir: est la sécurité. Quelqu'un a déjà essayé de le faire ( le même auteur pose une question sur la page officielle de Netty-Socket.IO Github ), mais il n'a pas encore eu la chance de le résoudre.

29
Maksim

Cela fait peut-être plus d'un an que la question a été posée. Mais, parce que cela rentre dans les premiers résultats lorsque Googling pour SockJS + Android. Donc, je poste ma réponse. 

D'après mon expérience avec un projet récent sur lequel j'ai travaillé, nous avons pu utiliser un client STOMP - comme celui-ci - pour vous connecter au backend Spring Websocket à partir d'une application Android native. 

Et à partir du navigateur, vous pouvez toujours utiliser le client SockJS pour gagner la compatibilité des navigateurs avec les WebSockets avec repli. 

Une remarque pour mentionner que lorsque vous utilisez uniquement le client STOMP pour vous connecter à un serveur Web natif, l'URL s'apparente à ws: // mydomain/SockJSEndpoint/websocket, Et lorsque vous utilisez le client SockJS à partir du navigateur. l'URL sera comme http: // mydomain/SockJSEndpoint. 

11
Amr K. Ismail
5
Durgesh Patel

SockJS peut être intéressant car il fournit des transports non-ws. L'utilisation de WebSockets peut ne pas être possible dans toutes les situations.

Il existe un client SockJs multi-plateformes du projet OpenFL :

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

Non testé si cela fonctionne bien, mais au moins pour Android, il utilise JavaScript à partir de WebView, il ne devrait donc pas être différent de JavaScript. Encore une fois, on ne sait pas à quel point cela est étroitement lié à OpenFL, mais l'approche consistant à utiliser WebView et le client stock SockJS pourrait probablement être réutilisée.

0
Roman Susi

Nous les avons testés, le client Android ( link ) a été fourni par @Amr K. Ismail et

ce client iOS ( link ) convient au serveur Spring-SockJS doté de STOMP.

0
Photon Point