Commencé à travailler sur le plugin NodeMCU pour Atom, mais j'ai des problèmes de 'delay' avec l'utilitaire luatool.py encore à régler, il va trop vite entre les commandes envoyées
This commit is contained in:
63
IDE_remote/SocketIDE/test1/main.lua
Normal file
63
IDE_remote/SocketIDE/test1/main.lua
Normal file
@@ -0,0 +1,63 @@
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user