• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ответы браузера на запросы Get Post

Anatjliy

New member
Добрый день ,
Есть esp12 (lolin node mcu v3)

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
WiFiServer server(80);
WiFiClient client;
const char* ssid = "Board";


void Wp1Out() {
String s = "HTTP/2.0 200 OK\r\n Content-Type: text/html\r\n Pragma: no-cache\r\nConnection: close\r\n\r\n";
s +="<html><header><title>board F2 F3</title></header>";
s +="<body bgcolor=teal text=red><pre><b>";//33cc66
s +="<h2>AVIA BOARD F</h2>";
s +="<form action=\"\"method= get>";
s +="<p>"
" <INPUT type=\"submit\" name=\"t1\" value=\"B\" style=\"background-color:red;\"/>"
" <INPUT type=\"submit\" name=\"t2\" value=\"B\" style=\"background-color:yellow;\"/> "
" <INPUT type=\"submit\" name=\"t3\" value=\"B\" style=\"background-color:lime;\"/> "
" <INPUT type=\"submit\" name=\"t4\" value=\"BLINC\" style=\"background-color:;\"/>"
" <INPUT type=\"submit\" name=\"t5\" value=\"BEEP\"/>"//вывод звука Beep 2 cek
"</p>";
s +="</form>";
s +="</b></pre>";
s += "</body></html>\n\r\n\r";
// отправить клиенту
client.print(s);
}

void setup() {
Serial.begin(115200);
delay(1);
WiFi.mode(WIFI_AP);
WiFi.softAP(ssid);
//WiFi.begin(ssid);
delay(1);
server.begin();
}

void loop() {
// WiFiClient client = server.available();
client = server.available();
if (!client) {
return;
}

while(!client.available()){
// delay(1);
}
//String req1 = client.readStringUntil('\r');
String req = client.readString();
Serial.println(req);
Wp1Out();
delay(10);
client.flush();
}

При подключении с смартфона , штатным браузером , всё нормально , при подключении и вызове и нажатии любой кнопки из crom или подобными ему браузерами приходит двойной ответ от клиента в ESP : 1 ответ post с данными о нажатой кнопки и срезу за ним запрос get /favicon .........
ЧТО МОЖЕТ БЫТЬ ?
 

Юрий Ботов

Moderator
Команда форума
БОЛЬШИНСТВО современных браузеров по умолчанию делают запрос favicon.ico чтобы разместить эту картинку в "командной строке перед адресом сайта". Вариантов два: послать таки браузеру эту картинку, чтобы отстал или игнрировать запрос favicon (послать браузеру ответ что такой картинки нет)
 

Anatjliy

New member
НО как то не интересно , и трафик подгружается ,(на данном этапе это заготовка , после будет определения что делать при приходе ответов ), хотелось бы построить быстрое общение между esp и клиентом , Так же замечена "вялая " реакция при подсоединении и работе от ноутбука с Win и удовлетворяющая реакция от смартфонов и планшетов
При использовании в качестве платформы на esp 01 с прошивкой AT и nano таких заморочек и тормозов не было , и ответы (esp-nano) приходили в более читабельном виде (правда nano работало под ассемблером)
 

Юрий Ботов

Moderator
Команда форума
говорю же простым языком: тормоза из-за того что браузер шлет запрос и не получает на него ответа, и ждет таймаут. Дайте браузеру ответ, хотябы "404" и все станет гораздо быстрее
 

pvvx

Активный участник сообщества
НО как то не интересно , и трафик подгружается ,(на данном этапе это заготовка , после будет определения что делать при приходе ответов ), хотелось бы построить быстрое общение между esp и клиентом , Так же замечена "вялая " реакция при подсоединении и работе от ноутбука с Win и удовлетворяющая реакция от смартфонов и планшетов
При использовании в качестве платформы на esp 01 с прошивкой AT и nano таких заморочек и тормозов не было , и ответы (esp-nano) приходили в более читабельном виде (правда nano работало под ассемблером)
В "скетче" же не полноценный HTTP сервер, а жалкое подобие. Что вы от него хотите, если современный браузер открывает HTTP сервер сразу с несколькими запросами-потоками, а у вас описан всего один однозадачный сокет TCP и нет поддержки HTTP сервиса хотя-бы по минимальным стандартам...
 
Сверху Снизу