在 NodeMCU 上运行的 lua 程序,HTTP 控制 LED 亮灭。
Video// 启动一个 server 进程
srv=net.createServer(net.TCP)
// 监听一个端口,conn 某个客户端连接
srv:listen(8001,function(conn)
// 收到数据 ①
conn:on("receive",function(conn,payload)
// 打印请求日志 ②
print(payload)
// 解析 HTTP Header ③
if (string.find(payload, "POST /power/on") ~= nil) then ④
// 服务器逻辑,向 0 口输入低电压,LED灯亮 ⑤
gpio.write(0, gpio.LOW)
// 给客户端返回数据 ⑥
conn:send("200 OK \r\n\r\nON")
elseif (string.find(payload, "POST /power/off") ~= nil) then
// 服务器逻辑,向 0 口输入高电压,LED灯灭
gpio.write(0, gpio.HIGH)
// 给客户端返回数据
conn:send("200 OK \r\n\r\nOFF")
end
// 处理结束,关闭本次请求
conn:close()
end)
end)
代码虽少,但提包含了一个 HTTP Server 几大核心功能:
① 限流,代理
② 日志
③ HTTP 解析
④ 路由,URL 到处理函数的映射
⑤ 服务器逻辑处理,如数据库操作
⑥ 响应数据,HTML,JSON 等格式
网友评论