使用 Lua 的 NodeMCU 套接字客户端未连接
NodeMCU socket client using Lua doesn't connect
我想将 NodeMCU 套接字客户端连接到 node.js 套接字服务器。
我在 NodeMCU 中使用 Lua 编程语言。我为客户端尝试了这段代码,但没有用。
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","Password")
wifi.sta.connect()
ip = wifi.sta.getip()
print("your IP is "..ip)
sk = net.createConnection(net.TCP, 0)
sk:on("receive", function ( sck,c )
print (c)
end)
sk:on("connection", function ( sck,c )
print("connected")
sk:send("Helloooo...")
end)
sk:connect(3000,"192.168.1.4")
node.js 服务器代码已经过测试并且运行良好。
var app = require('http').createServer();
var io = require('socket.io')(app);
io.on('connection', function(socket){
console.log('someone is connected');
});
app.listen(3000);
你 NodeMCU fundamentals 错了。 NodeMCU 是异步和事件驱动的,即大多数调用都是非阻塞的。
这意味着在您发出 wifi.sta.connect()
(不会阻止)之后,您需要等到设备获得 IP 才能继续。这是一个缩写 startup sequence from our docs:
function startup()
-- do stuff here
end
print("Connecting to WiFi access point...")
wifi.setmode(wifi.STATION)
wifi.sta.config(SSID, PASSWORD)
-- wifi.sta.connect() not necessary because config() uses auto-connect=true by default
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip() == nil then
print("Waiting for IP address...")
else
tmr.stop(1)
print("WiFi connection established, IP address: " .. wifi.sta.getip())
print("You have 3 seconds to abort")
print("Waiting...")
tmr.alarm(0, 3000, 0, startup)
end
end)
我想将 NodeMCU 套接字客户端连接到 node.js 套接字服务器。 我在 NodeMCU 中使用 Lua 编程语言。我为客户端尝试了这段代码,但没有用。
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID","Password")
wifi.sta.connect()
ip = wifi.sta.getip()
print("your IP is "..ip)
sk = net.createConnection(net.TCP, 0)
sk:on("receive", function ( sck,c )
print (c)
end)
sk:on("connection", function ( sck,c )
print("connected")
sk:send("Helloooo...")
end)
sk:connect(3000,"192.168.1.4")
node.js 服务器代码已经过测试并且运行良好。
var app = require('http').createServer();
var io = require('socket.io')(app);
io.on('connection', function(socket){
console.log('someone is connected');
});
app.listen(3000);
你 NodeMCU fundamentals 错了。 NodeMCU 是异步和事件驱动的,即大多数调用都是非阻塞的。
这意味着在您发出 wifi.sta.connect()
(不会阻止)之后,您需要等到设备获得 IP 才能继续。这是一个缩写 startup sequence from our docs:
function startup()
-- do stuff here
end
print("Connecting to WiFi access point...")
wifi.setmode(wifi.STATION)
wifi.sta.config(SSID, PASSWORD)
-- wifi.sta.connect() not necessary because config() uses auto-connect=true by default
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip() == nil then
print("Waiting for IP address...")
else
tmr.stop(1)
print("WiFi connection established, IP address: " .. wifi.sta.getip())
print("You have 3 seconds to abort")
print("Waiting...")
tmr.alarm(0, 3000, 0, startup)
end
end)