WebSockets,WebRTC,UDP:如何与esp8266实时通信

问题描述 投票:1回答:1

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

问题是数据开始延迟,有时消息收到很晚,因为它使用TCP(如果这些消息没有得到传递,它会更好)。此外,因为esp具有低内存,这可能导致它崩溃。

如何在不接收旧消息的情况下优化此更新以尽快更新?

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

应该考虑/使用什么样的东西?

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

谢谢你的帮助。

websocket webrtc real-time esp8266 arduino-esp8266
1个回答
0
投票

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

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

如果上述所有方法都没有帮助,那么Web浏览器就不适合您,您需要为移动设备创建应用程序,这会将原始UDP与您的服务器进行通信。除了WebRTC之外,浏览器不能执行UDP,但在您的情况下,您无法使用WebRTC,因为它不会在低内存esp上运行。 WebRTC是一种资源匮乏;不太适用于DSP。

© www.soinside.com 2019 - 2024. All rights reserved.