【问题标题】:Connect with iOS and Android clients to SockJS Backend将 iOS 和 Android 客户端连接到 SockJS 后端
【发布时间】:2015-10-27 07:43:16
【问题描述】:

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

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

我发现 iOS 客户端 Primus-Objc (GitHub page) 库声称他们可以连接到 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 (official library by Socket.IO guys) 所需的所有客户端库。

另一种选择是使用 Netty-Socket.io 库并手动构建每个端点,而无需 Spring Framework(我正在考虑使用)的任何帮助,但我必须解决一个小挑战,那就是安全性。 Somebody actually already tried to do it (the same author asking question on the official Netty-Socket.IO Github page) 但看起来他还没有运气解决它。

【问题讨论】:

  • 参考此博客elabs.se/blog/…
  • 为什么不简单地使用 cometd?它也支持 Android...
  • 如果你想要相关的cometd代码,请告诉我。我已经为我的项目实施了 cometd。
  • 你能找到这个问题的答案吗?任何与 SockJS 后端配合良好的 Android 客户端?

标签: java android ios spring spring-websocket


【解决方案1】:

我们已经对它们进行了测试,Android 客户端 (link) 均由 @Amr K. Ismail 提供,

此 iOS 客户端 (link) 适用于具有 STOMP 的 Spring-SockJS-Server。

【讨论】:

    【解决方案2】:

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

    根据我最近参与的一个项目的经验,我们能够使用 STOMP 客户端 - like the one here- 从原生 Android 应用程序连接到 Spring Websocket 后端。

    并且从浏览器中,您仍然可以使用 SockJS 客户端来获得跨浏览器对带有回退的 websocket 的兼容性。

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

    【讨论】:

    • 感谢您分享这个!
    • 天哪,非常感谢!花了几天时间弄清楚 Spring Boot 应用程序上正确的 websocket 端点是什么。当我尝试在 Android 中实现自己的 WebSocket+STOMP 库时,找不到任何有关在任何文档中添加“/websocket”的信息!
    • 假设您不能使用这些库。是否可以与ws://... 连接并构建 STOMP 框架并仅使用 websocket 而无需任何库
    【解决方案3】:

    SockJS 可能很有趣,因为它提供了非 ws 传输。仅在所有情况下都可能无法使用 WebSocket。

    OpenFL project 有一个跨平台的 SockJs 客户端:

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

    没有测试过它的工作情况,但至少对于 Android 来说,它是从 WebView 内部使用 JavaScript,所以应该与 JavaScript 没有什么不同。同样,目前尚不清楚它与 OpenFL 的耦合程度如何,但使用 WebView 和股票 SockJS 客户端的方法可能会被重用。

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 是否有 SockJS 和 iOS 相互通信并且用户通过身份验证的示例?
      • Link #1 是与 Link #3 中的源代码相关的博文。他们只是在那里做简单的“Hello World”示例。在 Link #2 中,他们提供使用一些 3rd 方 SDK。需要一些与 SockJS、移动设备和 Stomp 协议相关的具体和官方的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 1970-01-01
      • 2016-04-07
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多