我正在尝试使用 NodeMCU 制作一个简单的 HTTP 服务器。我启动nodeMCU,然后将它连接到wifi,然后运行下面的程序。我可以从我的浏览器连接到服务器。如果我继续重新加载页面,它将永远工作,但是当我停止发送请求一两分钟时,服务器会以某种方式停止运行。这意味着,当我重新加载页面时,nodeMCU 没有收到任何数据(并且无法返回任何数据)。
a=0
function receive(conn,payload)
a=a+1
print(payload)
local content="<!DOCTYPE html><html><head><link rel='shortcut icon' href='/'></head><body><h1>Hello!</h1><p>Since the start of the server " .. a .. " connections were made</p></body></html>"
local contentLength=string.len(content)
conn:send("HTTP/1.1 200 OK\r\nContent-Length:" .. contentLength .. "\r\n\r\n" .. content)
conn:close()
end
function connection(conn)
conn:on("receive",receive)
end
srv=net.createServer(net.TCP,1)
srv:listen(8080,connection)
我做过的一些事情:
- 我已通过将链接添加到任何内容来阻止浏览器请求网站图标。
- 我将非活动客户端的超时设置为 1,以防止浏览器长时间加载(浏览器一直加载直到超时)。
- 我更新了我的代码以发送一些 HTTP 标头。
- 我尝试在每次连接后关闭和打开服务器(不好,因为如果您继续进行连接,即使没有此修复,它也永远不会停止工作)。
- 我
conn:close()
按照 StackOverflow 上的答案的建议添加了。
我正在运行预编译固件 0.9.6-dev_20150704 整数。