【问题标题】:NodeMCU socket client using Lua doesn't connect使用 Lua 的 NodeMCU 套接字客户端无法连接
【发布时间】:2016-12-28 17:28:47
【问题描述】:

我想将 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);

【问题讨论】:

    标签: node.js lua nodemcu


    【解决方案1】:

    你弄错了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)
    

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 2013-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 2023-03-11
      • 2023-01-30
      • 1970-01-01
      相关资源
      最近更新 更多