Javascript 如何构造一个express应用程序,在覆盆子Pi3上运行光带
我在树莓pi上设置了一个节点服务器,在Adafruit Dotstar光带上显示一系列颜色。该功能的工作原理如下:我向Javascript 如何构造一个express应用程序,在覆盆子Pi3上运行光带,javascript,node.js,express,raspberry-pi,Javascript,Node.js,Express,Raspberry Pi,我在树莓pi上设置了一个节点服务器,在Adafruit Dotstar光带上显示一系列颜色。该功能的工作原理如下:我向localhost:8000/fade发出HTTP请求,服务器通过运行fade.js文件做出响应,该文件是一个无限循环,通过灯条上的不同颜色淡出。不幸的是,我希望能够退出此命令并通过另一个对localhost:8000/off的请求关闭灯带 我尝试了child\u进程包来运行“淡入淡出”代码,同时也监听新的请求。但是,我无法终止“淡出”过程 下面是我的app.js代码。有没有关于
localhost:8000/fade
发出HTTP请求,服务器通过运行fade.js文件做出响应,该文件是一个无限循环,通过灯条上的不同颜色淡出。不幸的是,我希望能够退出此命令并通过另一个对localhost:8000/off
的请求关闭灯带
我尝试了child\u进程
包来运行“淡入淡出”代码,同时也监听新的请求。但是,我无法终止“淡出”过程
下面是我的app.js代码。有没有关于如何终止child_进程,或者以其他方式重新构造代码以实现相同目标的建议?我真的只需要能够连续运行“淡入淡出”代码,同时响应新的请求
p、 这是我的第一个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
};
也
叹息:。。。进程必须显式地处理此信号才能工作
因此,如果您想关闭而不在分叉端处理它,或者
SIGKILL
只杀死那个mofo。太棒了!这很有效。谢谢你的帮助。我以前尝试过child.kill方法,但它不起作用,因为child未在外部作用域中定义。在路由之外定义子节点就成功了。
var child; // Outer scope, available in both functions.
app.get('/fade', function (req, res) {
var fork = require('child_process').fork;
child = fork('./sequences/fade.js');
});
app.get('/off', function (req, res) {
// (might be a good idea to check if child exists and is running first...)
child.kill('SIGHUP');
});