我正在使用Spring WebSockets开发WebSocket消息传递后端,SockJS GitHub page使用SockJS + STOMP协议。不使用普通WebSockets的原因是因为我需要利用SockJS在Spring WebSockets中提供的安全集成以及SockJS的其他整洁功能,例如房间,订阅等。我想知道这是否是一个很好的选择这样移动(iOS和Android)和Web客户端应用程序可以轻松连接到后端服务器并执行消息传递。如果是,那么我可以将哪些库用于iOS和Android。
在Primus-Objc上,他们还列出了可用的客户端库,但没有iOS和Android。所以,我想知道SockJS是否因此而值得使用。
我发现对于iOS客户端GitHub page(official library by Socket.IO guys)库声称他们可以连接到native WebSockets, Socket.IO, SockJS or perhaps engine.io.
是真的声明吗?如果这是真的,那该图书馆的质量怎么样?
如果可以在背面使用SockJS,那么是否可以显示iOS和Android的示例代码,以便我可以在移动设备上执行概念验证?
如果SockJS对我来说不是一个好选择,那么用Socket.io + Node.js(使用JavaScript)构建我的消息传递应用程序会更好吗?在我看来,Socket.io拥有iOS(official library by Socket.IO guys)和Android(Netty-Socket.io)所有需要的客户端库。
另一种选择可以是使用Somebody actually already tried to do it库并手动构建每个端点,而无需Spring Framework(我正在考虑使用)的任何帮助,但是我需要进行小的挑战。解决,那就是安全。 the same author asking question on the official Netty-Socket.IO Github page({{3}})但看起来他还没有运气解决它。
答案 0 :(得分:12)
自提出这个问题以来,可能还有一年多的时间。但是,因为它在Googling for SockJS + Android时获得了第一个结果。所以,我发布了我的答案。
根据我最近参与的项目的经验,我们能够使用STOMP客户端 - like the one here - 从本机Android应用程序连接到Spring Websocket后端。
从浏览器中,您仍然可以使用SockJS客户端来获得跨浏览器与websockets的兼容性。
需要注意的是,当仅使用STOMP客户端连接到本地websocket时,URL将类似于 ws: // mydomain / SockJSEndpoint / websocket , 当从浏览器使用SockJS客户端时,URL将类似于 http :// mydomain / SockJSEndpoint。
答案 1 :(得分:5)
请在下面找到与您对iOS和Android
的要求相关的有用参考资料答案 2 :(得分:0)
SockJS可能很有趣,因为它提供非ws传输。在任何情况下都可能无法使用WebSockets。
OpenFL project有一个跨平台的SockJs客户端:
https://github.com/jeremyfa/openfl-sockjs
没有测试它的工作情况,但至少对Android来说,它是在WebView中使用JavaScript,所以应该与JavaScript没有区别。同样,目前还不清楚它与OpenFL的紧密程度,但使用WebView和库存SockJS客户端的方法可能会重复使用。
答案 3 :(得分:0)