Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebSocket、WebRTC、UDP:如何与esp8266实时通信_Websocket_Webrtc_Real Time_Esp8266_Arduino Esp8266 - Fatal编程技术网

WebSocket、WebRTC、UDP:如何与esp8266实时通信

WebSocket、WebRTC、UDP:如何与esp8266实时通信,websocket,webrtc,real-time,esp8266,arduino-esp8266,Websocket,Webrtc,Real Time,Esp8266,Arduino Esp8266,我正在开发一个esp8266库,用于使用网络设备(主要是手机)控制机器人。用户连接到esp上运行的服务器,库使用WebSocket发送有关按钮、操纵杆和/或其他任何内容的更新 问题是数据开始延迟,有时消息接收得很晚,因为它使用TCP(如果这些消息没有被传递,它会工作得更好)。此外,由于esp内存不足,这可能导致其崩溃 我如何优化它,以便在不接收旧消息的情况下尽可能快地更新 像WebRTC这样的东西会更好,还是有其他更适合这个目的的东西?使用UDP的WebSocket似乎是更好的选择,但显然浏览器

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

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

我如何优化它,以便在不接收旧消息的情况下尽可能快地更新

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

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

顺便说一句,如果有帮助,这里有一个链接到我的


谢谢您的帮助。

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

  • arduinoWebSockets库提供了一些异步行为;确保你没有滥用它
  • 您需要将消息打包到单个有效负载中,直到有效负载达到MTU大小,或经过x毫秒数,并且您必须发送数据。与每次发送10条100字节的小消息不同,将它们累积到一个1000字节的有效负载中,然后立即发送。您应该看到吞吐量有了很大的提高
  • 如果以上这些都没有帮助,那么web浏览器就不是您的选择,您需要为手机创建应用程序,它将原始UDP传输到您的服务器。 除了WebRTC,浏览器不能执行UDP,但在您的情况下,您不能使用WebRTC,因为它不会在内存不足的情况下运行,尤其是WebRTC占用资源;不适用于DSP