Keresés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz Tankblock #14254 üzenetére

    Köszi.
    A websocket nekem egy ismeretlen terület, de ahogy látom van hozzá infó a neten. Belenéztem a forráskódjába, és - úgy látom - ugyanarra a Client osztályra épül, amit én gyalog módszerrel használok. Mindenesetre kipróbálom. ESP8266-on nem volt problémám, legalábbis nem vettem észre. Az úgy tűnik, ment rendesen, nem akadt ki.
    Az ESP8266WEBserver-t használtam, az kényelmes, és kedveltem. Régebben az ESP32-n is ment, de mostanában nem bírtam működőképes állapotba hozni, ezért mentem le az alapokhoz, mert a többi WEB szerverrel is csak kevés megnyitást lehetett csinálni, utána kiakadt.
    Korábban csináltam egy "echo" szervert ESP32-re ugyanígy az alapokra építve (netről az alapjai) és tökéletesnek tűnt a működése.
    Be lehetett rá akárhányan egyszerre jelentkezni valamiféle put teletype programmal (putty), vagy telnettel, és ha valaki bármilyen karaktert küldött, azt egyből elküldte mindenkinek. Ez jól működött ebből gondoltam, hogy menni fog. Valahogy a http (html) protokollt kellene ügyesebben kezelni, hogy ne minden alkalommal szakítson meg.
    Egyébként azt láttam, hogy valamicskét javít a helyzeten, ha se a String (nagybetűs, azaz spéci Arduino), se a string (kisbetűs, azaz szabvány C++) osztály példányaira nem használom a c+="akármi" gyűjtögetést. Úgy gondolom, hogy utólag azokat a szanaszéjjel tárolt darabjait nem tudja rendesen felszabadítani, vagy legalábbis elaprózott lesz a felszabadított terület.
    Ezt az irodalomból vett programot próbáltam használni, de valamiért nem sikerült. Rákerestem a hibajelzésre, és mindenütt csak a megválaszolatlan kérdést találtam, vagy legfeljebb annyi választ, hogy ez nem megoldott. Nem a net kezelésében lehet a hiba, hanem valahogy a heap kezelésben, csak itt jön elő látványosan, és csak akkor tapasztalom emberi mennyiségű (100 alatti) elérésnél, ha nagy a program. Kis programmal 180-ig próbáltam, addig nem jött elő hiba. Akkor meguntam, és nem folytattam.

    WiFiClient client = server.available(); // Listen for incoming clients
    if (client) {  
      string currentLine = "";  // make a String to hold incoming data from the client    
      string header = "";  
      while (client.connected()) {  // loop while the client's connected
       if (client.available()) { // if there's bytes to read from the client,
        char c = client.read(); // read a byte, then
        header += c;
        if (c == '\n') { // if the byte is a newline character
         // if the current line is blank, you got two newline characters in a row.
         // that's the end of the client HTTP request, so send a response:
         if (currentLine.length() == 0) {
          // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
          // and a content-type so the client knows what's coming, then a blank line:
          client.println("HTTP/1.1 200 OK");
          client.println("Content-type:text/html");
          client.println("Connection: close");
          client.println();
    client.println("<!DOCTYPE html><html>");  // Display the HTML web page
    stb.
                            
    client.println("</body></html>");  
    client.println();  // The HTTP response ends with another blank line

    client.stop();

Új hozzászólás Aktív témák

Hirdetés