将 iOS 和 Android 客户端连接到 SockJS 后端

2022-09-01 11:02:11

我正在使用Spring WebSockets开发WebSocket消息传递后端,它使用SockJS + STOMP协议。不使用普通的WebSockets的原因是因为我需要利用SockJS在Spring WebSockets中提供的安全集成以及SockJS的其他整洁功能,例如房间,订阅等。我想知道这是否是一个不错的选择,以便移动(iOS和Android)和Web客户端应用程序可以轻松连接到后端服务器并执行消息传递。如果是,那么我可以在iOS和Android上使用哪些库。

SockJS GitHub页面上,他们还列出了可用的客户端库,但没有iOS或Android。所以,我想知道SockJS是否值得使用,仅仅因为这个。

我发现对于iOS客户端Primus-ObjcGitHub页面)库声称他们可以连接到这是一个真实的说法吗?如果这是真的,那么该图书馆的质量如何?native WebSockets, Socket.IO, SockJS or perhaps engine.io.

如果可以在背面使用SockJS,那么是否也可以显示iOS和Android的示例代码,以便我可以在移动设备上执行概念验证?

如果SockJS对我来说不是一个好的选择,那么它是否比用 Socket.io + Node.js(使用JavaScript)构建我的消息传递应用程序更好。在我看来,Socket.io iOS(Socket.IO 人的官方库)和Android(Socket.IO 人的官方库)都需要客户端库

另一种选择是使用 Netty-Socket.io 库并手动构建每个端点,而无需Spring Framework(我正在考虑使用它)的任何帮助,但是我必须解决一些小挑战,那就是安全性。实际上有人已经尝试过这样做同一位作者在官方 Netty-Socket.IO Github页面上提问),但看起来他还没有运气解决这个问题。


答案 1

也许自从提出这个问题以来已经一年多了。但是,因为它在谷歌搜索SockJS + Android时获得了第一个结果。所以,我发布我的答案。

根据我最近参与的一个项目的经验,我们能够使用STOMP客户端 ( 就像这里一样 - 从原生Android应用程序连接到Spring Websocket后端。

从浏览器中,您仍然可以使用SockJS客户端来获得跨浏览器与具有回退功能的websockets的兼容性。

需要注意的是,当仅使用STOMP客户端连接到本机websocket时,URL将类似于ws://mydomain/SockJSEndpoint/websocket,当从浏览器使用SockJS客户端时,URL将类似于http://mydomain/SockJSEndpoint。


推荐