将NodeMCU Lua套接字客户端连接到node.js socket.io服务器

我想连接一个NodeMCU Lua套接字客户端到node.js socket.io服务器。

NodeMCU Lua代码:

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(12346,"192.168.1.100") 

Node.js服务器代码:

 var express = require('express'); var app = express(); var server = require('http').Server(app); var io = require('socket.io')(server); io.on('connection', function(socket){ console.log('someone is connected'); }); server.listen(12346); 

问题:

Lua客户端的on连接事件被触发并打印“Connected”,但是node.js socket.io服务器中的on连接事件未被触发。 我尝试了一个Python套接字服务器的Lua客户端,它工作得很好! 而且我还尝试了一个使用Javascript套接字客户端的node.js套接字服务器,它运行良好!

NodeMCU和socket.io之间是否存在兼容性问题?

Socket.io是一个WebSocket包装器,而不是一个基本的套接字实现。 其中有一些具体的操作,如握手和心跳。 所以你可以使用套接字服务器而不是WebSocket。

您也可以在NodeMCU一侧使用WebSocket客户端实现。 但是我不确定Lua库是否与WebSocket API版本匹配。

如果你想asynchronous通信,你可以使用MQTT ,它也有很多的NodeJS库。 否则,请使用之前成功完成的NodeJS套接字服务器。