在 NodeMCU 上運(yùn)行的 lua 程序,HTTP 控制 LED 亮滅。
Video
// 啟動(dòng)一個(gè) server 進(jìn)程
srv=net.createServer(net.TCP)
// 監(jiān)聽一個(gè)端口,conn 某個(gè)客戶端連接
srv:listen(8001,function(conn)
// 收到數(shù)據(jù) ①
conn:on("receive",function(conn,payload)
// 打印請(qǐng)求日志 ②
print(payload)
// 解析 HTTP Header ③
if (string.find(payload, "POST /power/on") ~= nil) then ④
// 服務(wù)器邏輯搔体,向 0 口輸入低電壓,LED燈亮 ⑤
gpio.write(0, gpio.LOW)
// 給客戶端返回?cái)?shù)據(jù) ⑥
conn:send("200 OK \r\n\r\nON")
elseif (string.find(payload, "POST /power/off") ~= nil) then
// 服務(wù)器邏輯侦高,向 0 口輸入高電壓嫉柴,LED燈滅
gpio.write(0, gpio.HIGH)
// 給客戶端返回?cái)?shù)據(jù)
conn:send("200 OK \r\n\r\nOFF")
end
// 處理結(jié)束厌杜,關(guān)閉本次請(qǐng)求
conn:close()
end)
end)
代碼雖少奉呛,但提包含了一個(gè) HTTP Server 幾大核心功能:
① 限流,代理
② 日志
③ HTTP 解析
④ 路由夯尽,URL 到處理函數(shù)的映射
⑤ 服務(wù)器邏輯處理瞧壮,如數(shù)據(jù)庫(kù)操作
⑥ 響應(yīng)數(shù)據(jù),HTML匙握,JSON 等格式