我在NodeMCU上运行TCP HTTP服务器。我正在提供文件,例如HTML,CSS和JavaScript。这很好,直到代码开始变长。
正在发生的事情是,响应刚刚被切断。它发生在大约1024个字符(似乎是神奇的数字)。
解决方案是将文件托管在服务器上,例如Google Drive,Dropbox或Github。但是,Internet访问不可用,因为服务器正在通过NodeMCU创建的热点运行。
是否可以覆盖此限制?
答案 0 :(得分:1)
ESP无法跨多个IP数据包流式传输数据,这就是为什么它会在1024个字符后被裁剪。
这是我在运行NodeMCU的ESP上提供较大文件的方式:
responseQueue = {}
function processQueue(socket)
if #responseQueue > 0 then
socket:send( table.remove(responseQueue, 1) )
else
socket:close()
collectgarbage()
end
end
function sendFile(conn, filename)
if file.open(filename, "r") then
table.insert(responseQueue, 'HTTP/1.1 200 OK\r\n')
table.insert(responseQueue, 'Content-Type: text/html\r\n\r\n')
local lastPos = 0
repeat
file.seek("set", lastPos)
local line = file.read(512)
file.close()
if line then
table.insert(responseQueue, line)
lastPos = lastPos + 512
else
lastPos = nil
end
until(line == nil)
end
processQueue(conn)
end
旁注: @TerryE here给出的原始答案使我想到了上面发布的实现。