【问题标题】:Is there a way to set a web socket server (not client) within iOS and Android devices?有没有办法在 iOS 和 Android 设备中设置 Web 套接字服务器(不是客户端)?
【发布时间】:2020-10-26 14:34:32
【问题描述】:

我正在研究是否可以在移动设备上设置“网络套接字服务器”(不同于“后端网络套接字服务器”的常用方法)。

为了做到这一点,我正在寻找一种让 iOS 和 Android 设备接受 WebSocket 请求的方法。

旁注,我不太确定移动操作系统的安全设计是否允许这样做。

有什么方法可以在移动设备上设置 web socket 服务器吗? (如果是,更进一步,有什么方法可以与 react-native 一起使用吗?)

【问题讨论】:

  • different than the common approach 那应该有什么不同呢?
  • 发起者将是一台云端机器,iOS或Android设备将响应来自云端机器的请求。 (请注意,我故意说“云机器”而不是“云服务器”,因为服务器角色是在 iOS 或 Android 设备上。)类似于推送机制。但是使用网络套接字完成。
  • 您是否正在寻找像this lib 这样的库?为什么你需要在 iOS/Android 上使用 WebSocket 服务器对我来说有点奇怪!?但是,如果给定的库是您的解决方案,请告诉我发布它。对于 Android,您应该使用原生 Android 助手,然后从 NativeModule 包装并调用它,并在您的 ReactNative 项目中使用它。
  • 实际上,我一直在寻找适用于 iOS 和 Android 的 react-native 实现。但仍然感谢 lib。

标签: android ios react-native websocket


【解决方案1】:

有点。要回答您的实际问题:不。您不能在 react* 中创建(多平台)网络服务器。要回答我认为您可能有的问题:是的。你可以在 React 中进行直接的客户端到客户端的通信。

如果你想在 React 中创建一个网络服务器,我可以想象两个用例(我可能完全错过了你的意思,如果是这样,我很抱歉)。

用例 1 - 与服务器通信

这个是微不足道的。一旦一切都被初始化,Websocket 客户端和服务器就是同一个东西。除了 keepalive 消息和优先级的一些例外情况外,您可以创建一个 websocket 连接一个反应应用程序,它实际上与一个到服务器的 websocket 连接相同。

用例 2 - 客户端到客户端的通信

如果您尝试让客户端设备相互通信,并且不想通过自己的服务器传递消息,那么您需要 WebRTC。它名为“Web 实时通信”,完全符合您的预期。

The mdn docs are a great place to get started。 WebRTC 允许网络上任意客户端之间的数据流,无需服务器。看起来该协议旨在用于在对等点之间流式传输视频,但它可以用于任何事情。

*

您可以在 react 中创建 webservers 和 web-server 类似的行为,但它是在特定于平台的方法中完成的。但是,thisthis 等项目具有允许您创建各种其他点对点通信流的框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2019-09-05
    • 2014-06-22
    • 2017-09-12
    • 2019-10-14
    • 2014-06-04
    • 2023-03-11
    相关资源
    最近更新 更多