Files
NodeMCU_Lua/IDE_remote/SocketIDE/test1/main.lua

64 lines
1.7 KiB
Lua

collectgarbage("setmemlimit", 4)
websocket.createServer(80, function (socket)
local data
node.output(function (msg)
return socket.send(msg, 1)
end, 1)
print("New websocket client connected")
function socket.onmessage(payload, opcode)
if opcode == 1 then
if payload == "ls" then
local list = file.list()
local lines = {}
for k, v in pairs(list) do
lines[#lines + 1] = k .. "\0" .. v
end
socket.send(table.concat(lines, "\0"), 2)
return
-- standard js websockets do not support ping/pong opcodes so we have to
-- fake it
elseif payload == "ping" then
socket.send("pong", 2)
return
end
local command, name = payload:match("^([a-z]+):(.*)$")
if command == "load" then
file.open(name, "r")
socket.send(file.read(), 2)
file.close()
elseif command == "save" then
file.open(name, "w")
file.write(data)
data = nil
file.close()
print("saved:"..name)
elseif command == "compile" then
node.compile(name)
print("compiled:"..name)
elseif command == "run" then
dofile(name)
elseif command == "eval" then
local fn, success, err
fn, err = loadstring(data, name)
if not fn then
fn = loadstring("print(" .. data .. ")", name)
end
data = nil
if fn then
success, err = pcall(fn)
end
if not success then
print(err)
end
else
print("Invalid command: " .. command)
end
elseif opcode == 2 then
data = payload
end
collectgarbage("setmemlimit", 4)
end
end)