Слияние socket.io с dgram socket udp4 - PullRequest
0 голосов
/ 06 марта 2020

У меня есть arduino для отправки данных. Я хотел отправить значения в службу nodejs и показать ее на веб-странице. Я хотел использовать socket.io, но я просто могу использовать UDP-соединение от Arduino к серверу (ethe rnet). Проблема в том, что я не знаю, как объединить оба кода в один.

Мой код socket.io сейчас работает, если я вызываю его с веб-сайта, но вместо создания var msg он должен получить данные, которые отправляет arduino.

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var port = process.env.PORT || 3000;

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
 setInterval(function()
{ 

   console.log("Emulando UDP")
   var msg = JSON.parse ('{"x" : 1, "y" : 1}');
   msg.x = Math.floor(Math.random() * 760);
   msg.y = Math.floor(Math.random() * 760);   
   io.emit('udp data', msg);
 }, 1000);

  });

  /*
io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});
*/

http.listen(port, function(){
  console.log('listening on *:' + port);
});

Это служба UDP, которая читает пакеты arduino:

const udp = require('dgram')

const server = udp.createSocket('udp4')

const data = Buffer.from('MSG from UDP client')


server.on('error', function(error) {
    console.log('Error ' + error);
    server.close();
});

server.on('message', function(msg, info) {
    console.log('Data received from client : ' + msg.toString());
    console.log('Received %d bytes from %s:%d\n',msg.length, info.address, info.port);
});

//emits when socket is ready and listening for datagram msgs
server.on('listening',function(){
    var address = server.address();
    var port = address.port;
    var family = address.family;
    var ipaddr = address.address;
    console.log('Server is listening at port : ' + port);
    console.log('Server ip :' + ipaddr);
    console.log('Server is IP4/IP6 : ' + family);

    /*
    server.send(data, 8888, "192.168.1.200", error => {
    if (error) {                                                           
            console.log(error)                                                 
            server.close()                                                     
    } else {                                                                    
            console.log('Data sent !!!')
    }
    });
    */
});

//emits after the socket is closed using socket.close();
server.on('close',function(){
  console.log('Socket is closed !');
});

server.bind(4444);

Любая идея о том, как объединить их в один, мне нужна помощь, пожалуйста Я новичок в этом, любая помощь будет оценена очень !! Когда я попытался объединить их, я не получил данные arduino.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...