wake-up-neo.net

Verbinden Sie sich mit iOS- und Android-Clients zum SockJS Backend

Ich entwickle das WebSocket-Messaging-Backend mit Spring WebSockets , das das SockJS + STOMP-Protokoll verwendet. Der Grund, warum ich keine einfachen WebSockets verwenden möchte, liegt darin, dass ich die Sicherheitsintegration, die SockJS in Spring WebSockets bietet, und andere nützliche Funktionen von SockJS wie Räume, Abonnements usw. nutzen muss. Ich habe mich gefragt, ob dies eine gute Option ist So können mobile (iOS und Android) und Web-Client-Apps problemlos eine Verbindung zum Backend-Server herstellen und Messaging durchführen. Wenn ja, welche Bibliotheken kann ich für iOS und Android verwenden.

Auf der SockJS-GitHub-Seite werden auch verfügbare Client-Bibliotheken aufgeführt, jedoch weder iOS noch Android. Ich frage mich also, ob SockJS gerade deshalb eine Verwendung wert ist.

Ich habe festgestellt, dass die Bibliothek Primus-Objc ( GitHub page ) des iOS-Clients behauptet, dass sie sich mit native WebSockets, Socket.IO, SockJS or perhaps engine.io. verbinden kann. Ist das eine wahrheitsgemäße Aussage? Und wenn das stimmt, was ist mit der Qualität dieser Bibliothek?

Und wenn es in Ordnung ist, SockJS auf der Rückseite zu verwenden, wäre es auch möglich, einen Beispielcode für iOS und Android anzuzeigen, damit ich einen Proof-of-Concept auf mobilen Geräten durchführen kann.

Wenn SockJS keine gute Option für mich ist, wäre es besser, als meine Messaging-App mit Socket.io + Node.js (mit JavaScript) zu erstellen. Socket.io scheint mir alle benötigten Client-Bibliotheken für iOS ( offizielle Bibliothek von Socket.IO guys ) und Android ( offizielle Bibliothek von Socket.IO guys ) zu bieten. 

Eine andere Option kann darin bestehen, die Bibliothek Netty-Socket.io zu verwenden und jeden Endpunkt manuell zu erstellen, ohne Hilfe von Spring Framework (das ich in Betracht ziehen möchte), aber es gibt eine kleine Herausforderung, die ich in Angriff nehmen muss ist Sicherheit. Jemand hat es tatsächlich schon versucht ( derselbe Autor hat auf der offiziellen Netty-Socket.IO-Github-Seite eine Frage gestellt), sieht aber so aus, als hätte er noch kein Glück bei der Lösung.

29
Maksim

Vielleicht ist es mehr als ein Jahr her, seit die Frage gestellt wurde. Aber weil Googling für SockJS + Android erste Ergebnisse erzielt. Also poste ich meine Antwort. 

Aus meiner Erfahrung mit einem Projekt, an dem ich gerade gearbeitet habe, war es uns möglich, einen STOMP-Client zu verwenden - wie hier -, um eine Verbindung mit dem Spring Websocket-Backend über die native Android-App herzustellen. 

Über den Browser können Sie den SockJS-Client weiterhin verwenden, um die Kompatibilität von Browsern mit Websockets mit Fallback zu erreichen. 

Zu beachten ist, dass bei Verwendung von STOMP-Client zum Herstellen einer Verbindung zu nativem Websocket die URL etwa wie folgt lautet: ws: // mydomain/SockJSEndpoint/websocket,.. Die URL lautet http: // meineDomäne/SockJSEndpoint. 

11
Amr K. Ismail
5
Durgesh Patel

SockJS kann interessant sein, da es Nicht-WS-Transporte bereitstellt. Die Verwendung von WebSockets ist möglicherweise nicht in allen Situationen möglich.

Es gibt einen plattformübergreifenden SockJs-Client des OpenFL-Projekts :

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

Nicht getestet, wie gut es funktioniert, aber zumindest für Android wird JavaScript in WebView verwendet. Daher sollte es sich nicht von JavaScript unterscheiden. Auch hier ist nicht klar, wie eng es mit OpenFL gekoppelt ist, aber der Ansatz der Verwendung von WebView und des SockJS-Clients könnte möglicherweise wiederverwendet werden.

0
Roman Susi

Wir haben sie getestet, beide Android-Clients ( link ) wurden von @Amr K. Ismail und gegeben

dieser iOS-Client ( link ) eignet sich für Spring-SockJS-Server mit STOMP.

0
Photon Point