У меня есть 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
});
});