Узел зависает при прослушивании - PullRequest
1 голос
/ 22 апреля 2020

У меня есть Node-сервер, который получает данные - (несколько целых чисел) с веб-страницы - как только он получает данные, я бы хотел, чтобы он обрабатывал данные, при этом все еще прислушиваясь к обновлениям новых полученных данных. Моя проблема в том, что серверный код, кажется, сидит в ожидании поступления данных, поэтому он как бы зависает. Вот клип моего серверного кода узла. Ожидание, кажется, прямо вокруг строки socket.on. Можно ли что-нибудь сделать, чтобы другие задачи можно было выполнять, при этом все еще ожидая получения новых данных?

  var express = require('express');
  var app = express();
  var server = require('http').createServer(app);
  var io = require('socket.io')(server); //require socket.io module and pass the
  var path = require('path');
  var Gpio = require('pigpio').Gpio, //include pigpio to interact with the GPIO
  ledRed = new Gpio(4, {mode: Gpio.OUTPUT}), //use GPIO pin 4 as output for RED
  ledGreen = new Gpio(17, {mode: Gpio.OUTPUT}), //use GPIO pin 17 as output for
  ledBlue = new Gpio(27, {mode: Gpio.OUTPUT}), //use GPIO pin 27 as output for B
  anglev = 0, //set starting value of RED variable to off (0 for common cathode)
  speedv = 0.0, //set starting value of GREEN variable to off (0 for common cath
  dirv = 0, //set starting value of BLUE variable to off (0 for common cathode)
  stopv = 0, // if this is set to 1 then stop the turntable at preset stopping p
  refv = 1,// if this is set to 1 then log the info when the turntable goes by r
  newspeed = 0; //this is the conversion of the speed from 0-6 to 0-255 for pwm

app.use(express.static(path.join(__dirname, 'public')));

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

  server.listen(8080);

  io.on('connection', function (socket) {
    socket.on('rgbLed', function(data) { //get light switch status from client -
               console.log(data); //output data from WebSocket connection to con
               anglev=parseInt(data.angle);
               speedv=parseFloat(data.speed);
               dirv=parseInt(data.direction);
               stopv=parseInt(data.stop);
               refv=parseInt(data.refv);
               newspeed = Math.round(speedv * 42.5);
               ledRed.pwmWrite(newspeed); //setspeed
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...