Я настроил сервер узлов на Raspberry Pi для отображения последовательности цветов на светлой полосе Adafruit Dotstar. Функциональность работает следующим образом: я делаю HTTP-запрос к localhost:8000/fade
, и сервер отвечает запуском файла fade.js, который представляет собой бесконечный цикл, который исчезает через разные цвета на светлой полосе. К сожалению, я хотел бы иметь возможность выйти из этой команды и выключить световую полосу с другим запросом к localhost:8000/off
.
Я экспериментировал с пакетом child_process
, чтобы запустить код "fade" и одновременно прослушивать новые запросы. Однако я не могу убить процесс "исчезновения".
Ниже приведен код моего app.js. Любые предложения о том, как убить child_process или, возможно, реструктурировать код другим способом для достижения той же цели? Мне просто нужно иметь возможность непрерывно запускать код «исчезать», а также отвечать на новые запросы.
p.s. Это мой первый проект JS, так что будьте спокойны! Любая помощь приветствуется.
app.js:
var express = require('express'),
app = express();
app.get('/', function (req, res) {
res.send('App is responding to requests');
});
app.get('/fade', function (req, res) {
var fork = require('child_process').fork;
child = fork('./sequences/fade.js');
});
app.get('/off', function (req, res) {
var fork = require('child_process').fork;
child = fork('./sequences/off.js');
});
app.listen(8000, function () {
console.log('Example app listening on port 8000!')
})
fade.js:
console.log("running fade.js");
var dotstar = require('dotstar'),
SPI = require('pi-spi'),
sleep = require('sleep');
spi = SPI.initialize('/dev/spidev0.0');
const ledStripLength = 30;
const ledStrip = new dotstar.Dotstar(spi, {
length: ledStripLength
});
while(1) {
fade(); //where fade is a long sequence of colors
};