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

时间:2016-12-29 12:14:33

标签: node.js lua socket.io esp8266 nodemcu

我想将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连接事件被触发并打印“已连接”,但未触发node.js socket.io服务器中的on连接事件。我尝试使用Python套接字服务器的Lua客户端,它运行良好!我还尝试了一个带有Javascript套接字客户端的node.js套接字服务器,它运行良好!

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

1 个答案:

答案 0 :(得分:1)

Socket.ioWebSocket包装器,而不是基本的套接字实现。其中有一些特定的操作,如握手和心跳。因此,您可以使用套接字服务器,但不能使用WebSocket服务器。

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

如果您想要异步通信,可以使用MQTT,它还有许多NodeJS库。否则,请使用先前成功完成的NodeJS套接字服务器。