esp8266 ответ сервера
- Войдите на сайт для отправки комментариев
Добрый день. Есть проект на ESP-12E (NodeMcu v3) в котором ESP отправляет значение на веб сервер. После того как данные не сервере обработаются сервер выдает echo "gooddata"; или echo "baddata"; более ничего эта страничка не выдает. Все хорошо работает но вот если смотреть через монитор порта на те данные что принимает ESP от сервера то видно что 90% данных это заголовки http что заметно сказывается на скорости ответа ESP пользователю.
ответ в порт
HTTP/1.1 200 OK Date: Wed, 07 Mar 2018 12:18:30 GMT Server: Apache Content-Length: 8 Connection: close gooddata
Код отправки
WiFiClient client; if (!client.connect(host, httpPort)) { Serial.println("connection failed"); } client.print(String("GET /insert.php?id=")+find+" HTTP/1.1\r\nHost: "+host+"\r\nConnection: close\r\n\r\n"); delay (200); if (client.connected()) { String c = client.readString(); if(c.indexOf("gooddata")>0) { Serial.println( "Data send. Ok!"); }else { Serial.println( "Data send. Fault!"); } Serial.print(c);//Deb client.stop(); }
Все отправляется на субдомен.
Может кто подсказать как уменьшить время чтения ответа?
p.s.
В этом проекте участвует еще w5100 у нее такая же беда с получением ответа.
Через браузер если передать GET скрипт на сервере отвечает моментально.
Просьба поправить меня если я не прав или как то нарушаю всемирный баланс )). Из ситуации вышел так. Раз уж я парюсь над чтением заголовков, а потом над ответом. То почему бы не менять заголовок в зависимости от результата работы скрипта на веб сервере.
код чтения ответа
В рhp скрипте в ответы вставил подмену заголовка на отрицательный результат работы скрипта
Теперь если все Ок то сервер шлет мне "HTTP/1.1 200 OK". И если все не Ок то мне приходит "HTTP/1.1 201 OK".
Читая только первую строку до конца и сравнивая ее с ожидаемым ответом я понимаю каков результат запроса отправленного esp8266
В результате этого скорость ответа esp8266 человеку доли секунды
p/s/
Код 201 означает Created-"Создано". Запрос успешно выполнен и в результате был создан ресурс. Этот код обычно присылается в ответ на запрос PUT "ПОМЕСТИТЬ".
Годный хак )) Только код выберите более осмысленый, там их много разных. А вобще для быстрого обмена HTTP не самое подходящее. Голый TCP/IP быстрей будет. Но сервер свой прийдется писать вместо вебсервера. А это сложно. Можете еще про WebSocket почитать, он быстрый и хороше в JS поддержан.
Годный хак )) Только код выберите более осмысленый, там их много разных. А вобще для быстрого обмена HTTP не самое подходящее. Голый TCP/IP быстрей будет. Но сервер свой прийдется писать вместо вебсервера. А это сложно. Можете еще про WebSocket почитать, он быстрый и хороше в JS поддержан.
Это не сильно годный хак! Для кодов возврата HTTP есть строго стандартизованные коды возврата, а отход от стандарта влево или вправо - растрел на месте!
По TCP (или UDP) такой обмен был бы на порядки быстрее (может даже не один порядок).
А написать TCP сервер ... в Windows это и вправду хлопотно, а в Linux, например, используя демон суперсервера inetd / xinetd - пишется ровно в 3-4 строчки кода на C/C++.
203 Non-Authoritative Information — аналогично ответу
200
, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной.Строго стандартный. И сути проблемы намного лучше соответствует. Если знать что автор имеет ввиду под "baddata", то может и еще лучше чего найдется.
Что под винду, что под линукс - один хрен. И уж точно inetd не для быстрого обмена, там процесс запускается новый при акцепте, что ну никак не быстро.
И уж точно inetd не для быстрого обмена, там процесс запускается новый при акцепте, что ну никак не быстро.
Очень даже быстро, если сравнивать с реакцией HTTP-сервера.
(Ссылки дать?)