ESP8266 webserver som betjänar flera sidor (4 / 5 steg)
Steg 4: Ändrade server-fil som heter newserver.lua, nyckeln till multi-webbsidor.
Nu har jag laddat upp filerna kallas newserver.lua, index.htm och bob.htm till modul; Startas och angivna dofile("newserver.lua").
Att ange mitt module'a IP-nummer visas filen index.htm. Om du klickar på länken till Bob visas bob.htm och hem kommer tillbaka till indexsidan.
Viss diskussion om newserver.lua:
Jag har kodat index.htm som filen "landning". Jag vill att modulen för index.htm när jag kommer in modulens IP i en webbläsare.
Jag använder några LUA kod för att tolka inkommande huvudet begäran att avgöra om begäran anger en fil eller inte. En begäran om att bara min modulen IP nummer 192.168.11.44 anger inte en särskild fil.
En del av ett typiskt huvud begärande index. kan se ut:
FÅ / HTTP/1.1
Värd: 192.168.11.44 anslutning: keep-alive
Acceptera: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
..............etc.
Denna begäran är att be om bob.htm:
FÅ /bob.htm HTTP/1.1
Värd: 192.168.11.44 anslutning: keepalive-acceptera: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8... etc.
Parsning det första exemplet, skulle newserver.lua inte hitta en viss fil att öppna. Eftersom jag vill index.htm ska filen landning, när tgtfile returnerar noll, ersätta jag index.htm. Rad 6.
Tolka rubriken för andra begäran kommer att identifiera att begäran är anger en fil, i detta fall "bob.htm". Så är bob.htm öppnat och skickade en linje på på gång med klienten: send(file.read()) kod.
Det är viktigt att inte file.read() filer som inte finns.
Detta kommer att orsaka modulen till panik och starta om.
Så, innan behandlingen jag testa för att se om filen finns med file.open(), linje 7 och 8.
Om ingen fil, skickar newserver.lua helt enkelt tillbaka 'filen hittades inte', och en länk tillbaka till målsidan.
Detta händer när jag klickar på Jill eller Barb tills jag ladda htm-filer för dem.
------------------------------------------------------
- --newserver.lua
- SRV=net.createServer (net. TCP)
- SRV:listen(80,function(Conn)
- Conn: on("receive", function(client,payload)
- tgtfile = string.sub (payload,string.find (payload, "GET /") +5,string.find(payload,"HTTP/") -2)
- om tgtfile == "" då tgtfile = "index.htm" slut
- lokala f = file.open(tgtfile,"r")
- om f ~ = noll då
- client: send(file.read())
- File.Close()
- annat
- client: send("<html>")
- client: send(tgtfile.."not Found-404 error.")
- client: send("<a href='index.htm'>Home</a>")
- slutet
- klient: close()
- collectgarbage()
- f = noll
- tgtfile = noll
- avsluta)
- avsluta)
_____________________________________