2016-12-29 209 views
1

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

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

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

回答

1

Socket.io是一个WebSocket包装,而不是一个基本的套接字实现。其中有一些特定的操作,例如握手和心跳。所以你可以用socket服务器成功,但不能用WebSocket。

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

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

+0

谢谢你的回复,我已经尝试过MQTT并且工作过。 –

相关问题