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

时间:2019-03-05 04:04:11

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

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

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

在不接收旧邮件的情况下,我如何优化它以使其尽快更新?

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

应该研究/使用哪种东西?

如果可以的话,这是指向我的library的链接。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

如果以上所有方法均无济于事,则您不能选择使用网络浏览器,并且需要为手机创建应用程序,以将原始UDP与服务器通信。 除了WebRTC之外,浏览器无法执行UDP,但是在您的情况下,您不能使用WebRTC,因为它根本不会在内存不足的esp上运行。 WebRTC是资源浪费;不适用于DSP。