我正在使用开发 WebSocket 消息传递后端Spring WebSockets https://spring.io/guides/gs/messaging-stomp-websocket/,它使用SockJS + STOMP协议。之所以不使用普通的 WebSockets 是因为我需要利用 SockJS 在 Spring WebSockets 中提供的安全集成以及 SockJS 的其他简洁功能,例如房间、订阅等。我想知道这是否是一个不错的选择以便移动(iOS 和 Android)和 Web 客户端应用程序可以轻松连接到后端服务器并执行消息传递。如果是,那么我可以在 iOS 和 Android 上使用哪些库。
On SockJS GitHub 页面 https://github.com/sockjs/sockjs-client他们还列出了可用的客户端库,但没有列出 iOS 或 Android。所以,我想知道 SockJS 是否值得使用。
我发现对于 iOS 客户端Primus 对象 http://seegno.com/blog/2014/03/21/primus-objc-a-realtime-framework-agnostic-library-for-ios/ (GitHub 页面 https://github.com/seegno/primus-objc)图书馆声称他们可以连接到native WebSockets, Socket.IO, SockJS or perhaps engine.io.
这是真的吗?如果这是真的,那么该库的质量又如何呢?
如果可以在背面使用 SockJS,那么是否也可以显示 iOS 和 Android 的示例代码,以便我可以在移动设备上执行概念验证?
如果 SockJS 对我来说不是一个好的选择,那么它会比使用 Socket.io + Node.js (使用 JavaScript)构建我的消息应用程序更好。在我看来,Socket.io 拥有 iOS 所需的所有客户端库(Socket.IO 的官方库 http://socket.io/blog/socket-io-on-ios/)和安卓(Socket.IO 的官方库 http://socket.io/blog/native-socket-io-and-android/).
另一种选择是使用Netty-Socket.io https://github.com/mrniko/netty-socketio库并手动构建每个端点,无需 Spring Framework(我正在考虑使用)的任何帮助,但我必须解决一个小挑战,那就是安全性。实际上已经有人尝试这样做了 https://stackoverflow.com/questions/31294883/netty-socketio-with-spring-security (同一个作者在官方 Netty-Socket.IO Github 页面上提出问题 https://github.com/mrniko/netty-socketio/issues/110)但看起来他还没有运气解决这个问题。
也许距离提出这个问题已有一年多了。但是,因为在 Google 搜索 SockJS+Android 时它得到了第一个结果。所以,我发布我的答案。
根据我最近从事的一个项目的经验,我们能够使用 STOMP 客户端 -就像这里的那个 https://github.com/NaikSoftware/StompProtocolAndroid- 从本机 Android 应用程序连接到 Spring Websocket 后端。
在浏览器中,您仍然可以使用 SockJS 客户端来获得跨浏览器对带有回退功能的 Websocket 的兼容性。
需要注意的是,当仅使用 STOMP 客户端连接到本机 websocket 时,URL 将类似于ws://mydomain/SockJSEndpoint/网络套接字,
当从浏览器使用 SockJS 客户端时,URL 将类似于http://mydomain/SockJSEndpoint。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)