WebSockets, WebRTC, UDP: как общаться с esp8266 в реальном времени - PullRequest
0 голосов
/ 05 марта 2019

Я работаю над библиотекой esp8266 для использования веб-устройства (в основном только телефонов) для управления роботом.Пользователь подключается к серверу, работающему на ESP, а библиотека использует WebSockets для отправки обновлений о кнопках, джойстиках и / или о чем-либо еще.

Проблема в том, что данные начинают задерживаться, а иногда сообщения получают оченьпоздно, потому что он использует TCP (он будет работать лучше, если эти сообщения просто не будут доставлены).Кроме того, поскольку у esp недостаточно памяти, это может привести к его аварийному завершению.

Как мне оптимизировать это, чтобы обновить как можно быстрее без получения старых сообщений?

Было бы что-то вроде WebRTC лучше или лучшеЕсть что-то еще более подходящее для этой цели?WebSockets, использующие UDP, кажется лучшим выбором, но, по-видимому, браузеры не могут отправлять UDP?

Какие вещи следует изучить / использовать?

Кстати, если это поможет, вот ссылкав мою библиотеку .

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 05 марта 2019

Вам нужно найти причину, почему сообщения приходят с опозданием.Нестабильная сеть, или вы отправляете слишком много небольших сообщений, или неправильно используете библиотеку arduinoWebSockets?

  1. Библиотека arduinoWebSockets предлагает некоторое асинхронное поведение;убедитесь, что вы не используете его не по назначению.
  2. Вам необходимо упаковать свои сообщения в одну полезную нагрузку, пока полезная нагрузка не достигнет размера MTU или x числа пройденных миллисекунд, и вы должны отправить данные.В отличие от отправки 10 крошечных сообщений по 100 байт каждое, накапливайте их в одну полезную нагрузку в 1000 байт и отправляйте сразу.Вы должны увидеть значительное улучшение пропускной способности.

Если все вышеперечисленное не поможет, тогда веб-браузеры не подходят для вас, и вам нужно будет создавать приложения для мобильных устройств, которые будут взаимодействовать с сырым UDPваш сервер.Браузеры не могут использовать UDP, кроме WebRTC, но в вашем случае вы не можете использовать WebRTC, потому что он просто не будет работать на вашей памяти, которой не хватает.WebRTC - это боров ресурсов;не очень применимо к DSP.

...