【问题标题】:What's better for Video and Real-Time Control - ZMQ or Websockets?视频和实时控制哪个更好 - ZMQ 或 Websockets?
【发布时间】:2017-10-06 15:35:00
【问题描述】:

我正在编写一个远程服务器来控制机器人。机器人提供视频及其当前传感器状态;服务器发送控制命令。

我选择在机器人和服务器之间发送帧和控制/传感器状态(2 路)是 ZeroMQ 和 WebSockets。

我需要:

  1. 速度
  2. 安全性

我的编码伙伴想要使用 Websockets,因为它正在进行标准化,但我有 3 个月的使用 ZMQ 来做我们想做的事情的经验,所以我相当肯定选择并不重要。

但是,我想知道是否有人能想出一个令人信服的理由来选择一个或另一个 (XOR)。我们不会使用 ZMQ+Websockets,因为我们不需要。

【问题讨论】:

  • 3.延迟(这对实时控制来说非常重要)...
  • 4.延迟抖动
  • “安全”是什么意思?加密?认证/授权?此外,机器人/服务器是在专用网络上还是通过互联网进行通信?
  • 加密。他们通过互联网进行通信,但不涉及浏览器。仅限端点和原始应用程序。

标签: security websocket zeromq robot


【解决方案1】:

看看 WebSocket 是什么,老实说,我认为它不会有太大的不同。它们只是一种在同一个 TCP 连接上在说 HTTP 和 WebSocket 框架消息协议之间切换的方法。 ZMQ 也为您提供框架消息,但您将通过与 Web 浏览器的 HTTP 连接分开的网络连接使用它。

延迟比较将取决于 Web 浏览器提供的运行时环境有多好。在我看来,使用 WebSockets 将涉及用 Javascript 编写客户端代码并在浏览器中运行(“现代”方式),因此代码将受 Web 浏览器的 Javascript 引擎的支配(它们很漂亮我认为很好)。

使用 ZMQ,您可能不得不为客户端编写本机应用程序(我不知道它是否可以在 Javascript 中的 Web 浏览器中使用 - 我需要一些教育!)。本机应用程序不受 Web 浏览器的任何影响,因此它可能只是一个阴影更好。

但是,如果您的实时要求仅在人类规模上(即它只需要快速响应以使人类快乐),我认为任何一个都可能就足够了。两者都无法克服通过 Internet 的传播时间,也无法解决操作系统/浏览器延迟问题。

不同之处在于,使用 WebSocket 时,您似乎必须在 HTTP 和 WebSocket 协议之间切换。因此,如果您需要切换回 HTTP 来加载某些 Web 元素或其他内容,这将中断 WebSocket 数据流,直到您再次切换回。这是否真的是一个问题将在很大程度上取决于您的客户端应用程序正在做什么(例如,您很可能正在与一个单独的 Web 服务器对话以获取网页元素,在这种情况下,您将有两个无论如何都要随时随地连接)。

使用 ZMQ,您将拥有一个专用连接。

【讨论】:

  • 只是一个旁注,我不会在浏览器中处理这些。这都是后端服务器应用程序到机器人服务器应用程序。
猜你喜欢
  • 2011-05-23
  • 1970-01-01
  • 2012-10-21
  • 2011-11-02
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多