2016-12-29 2 views
1

Я хочу подключить клиент сокета 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 является и «Отключено», но соединение event в node.js socket.io server не запускается. Я попробовал клиента Lua с сервером сокетов Python, и он работал хорошо! И я также пробовал сервер сокета node.js с клиентом сокета Javascript, и он работал хорошо!

Существуют ли проблемы совместимости между NodeMCU и socket.io?

ответ

1

Socket.io - это оболочка WebSocket, а не базовая реализация сокета. В нем есть определенные операции, такие как рукопожатие и сердцебиение. Таким образом, вы можете добиться успеха с серверами сокетов, но не с помощью WebSocket.

Вы также можете использовать реализацию клиента WebSocket на стороне NodeMCU. Но я не уверен, совпадает ли библиотека Lua с версией API WebSocket.

Если вы хотите асинхронную связь, вы можете использовать MQTT, в которой также есть множество библиотек для NodeJS. В противном случае используйте сервер сокетов NodeJS, как вы это делали ранее.

+0

Спасибо, что ответили, я уже пробовал MQTT и работал. –