【问题标题】:WebSockets, WebRTC, UDP: how to communicate with esp8266 real-timeWebSockets、WebRTC、UDP:如何与 esp8266 实时通信
【发布时间】:2019-03-05 04:04:11
【问题描述】:

我正在开发一个 esp8266 库,用于使用 Web 启用设备(主要是手机)来控制机器人。用户连接到运行在 esp 上的服务器,该库使用 WebSockets 发送有关按钮、操纵杆和/或其他任何内容的更新。

问题是数据开始延迟,有时消息接收很晚,因为它使用 TCP(如果这些消息没有被传递,它会更好地工作)。此外,由于 esp 内存不足,这可能会导致它崩溃。

我将如何优化它以尽可能快地更新而不会收到旧消息?

像 WebRTC 这样的东西会更好,还是有其他更适合这个目的的东西?使用 UDP 的 WebSockets 似乎是一个更好的选择,但显然浏览器无法发送 UDP?

应该研究/使用什么样的东西?

顺便说一句,如果有帮助,这里是我的library 的链接。

感谢您的帮助。

【问题讨论】:

    标签: websocket webrtc real-time esp8266 arduino-esp8266


    【解决方案1】:

    您需要找出消息迟到的原因。网络不稳定,或者您发送的小消息太多,或者您没有正确使用 arduinoWebSockets 库?

    1. arduinoWebSockets 库提供了一些异步行为;确保您没有滥用它。
    2. 您需要将消息打包到单个有效负载中,直到有效负载达到 MTU 大小或经过 x 毫秒后,您必须发送数据。与发送 10 条每条 100 字节的微小消息相反,将它们累积成一个 1000 字节的有效负载并立即发送。您应该会看到吞吐量大幅提升。

    如果以上所有方法都没有帮助,则网络浏览器不适合您,您需要为手机创建应用程序,它将原始 UDP 传输到您的服务器。 浏览器不能做 UDP,除了 WebRTC,但在你的情况下你不能使用 WebRTC,因为它根本不会在你的低内存 esp 上运行。 WebRTC 是一个资源消耗者;并不真正适用于 DSP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-06
      • 2016-06-11
      • 2020-03-04
      • 2017-07-16
      • 2016-12-05
      • 1970-01-01
      • 2014-06-16
      • 2017-07-19
      相关资源
      最近更新 更多