将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套接字服务器。