Javascript 如何从http请求运行节点localhost子进程?
我正在试验node和JavaScript,试图为raspberry pi上的电机创建一个无线控制器。基本上,我创建了一个节点localhost,然后使用了一个代理,这样我就可以通过internet访问它。我制作了一个带有滑块的html页面,当前该页面在本地主机的不同值上发送HTTP请求到本地主机的不同路径,该值应该运行一个节点子进程。问题是,节点没有将HTTP请求视为与打开页面相同的内容,因此它不会运行子进程。我试着寻找另一种选择,但我对这一切都不熟悉,什么也找不到。对不起,如果我解释错了或误用了一个术语。 JavaScript代码:Javascript 如何从http请求运行节点localhost子进程?,javascript,node.js,http,Javascript,Node.js,Http,我正在试验node和JavaScript,试图为raspberry pi上的电机创建一个无线控制器。基本上,我创建了一个节点localhost,然后使用了一个代理,这样我就可以通过internet访问它。我制作了一个带有滑块的html页面,当前该页面在本地主机的不同值上发送HTTP请求到本地主机的不同路径,该值应该运行一个节点子进程。问题是,节点没有将HTTP请求视为与打开页面相同的内容,因此它不会运行子进程。我试着寻找另一种选择,但我对这一切都不熟悉,什么也找不到。对不起,如果我解释错了或误用
<script>
const Http = new XMLHttpRequest();
const urlReverse='https://ip:3000/reverse';
const urlDrive='https://ip:3000/drive';
const urlNeutral='https://ip:3000/neutral';
var rangeslider = document.getElementById("sliderRange");
var output = document.getElementById("demo");
rangeslider.oninput = function() {
if (this.value < 33){
output.innerHTML = 'Reverse';
Http.open("POST", urlReverse, true);
Http.send();
}
else if (this.value >= 33 && this.value <= 66){
output.innerHTML = 'Neutral';
Http.open("POST", urlNeutral, true);
Http.send();
}
else if (this.value > 66){
output.innerHTML = 'Forward';
Http.open("POST", urlDrive, true);
Http.send();
}
}
</script>
嗯,您发送的是POST请求,但仅绑定获取请求的路由
将
驱动器的app.get()
s换成app.post()
。尝试了此操作,但无效。当我转到地址时,它会说无法获取/。是的,因为当您“手动”导航到某个地址时,浏览器会发送获取请求。您的JavaScript运行Http.open(“POST”,…)
发送POST请求。我再试了一次,但无法让它工作。不要说不能再得到了,但仍然不起作用。
const http = require('http');
var app = require('express')();
const { exec } = require("child_process");
app.get('/', function(req, res){
console.log('')
res.sendFile(__dirname + '/index.html');
});
app.get('/neutral', function(req, res){
exec("python3 " + __dirname + "/neutral.py", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
res.sendFile(__dirname + '/index.html');
});
app.get('/drive', function(req, res){
exec("python3 " + __dirname + "/drive.py", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
res.sendFile(__dirname + '/index.html');
});
app.get('/reverse', function(req, res){
exec("python3 " + __dirname + "/reverse.py", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
res.sendFile(__dirname + '/index.html');
});
// Start the server on port 8080
app.listen(8080, '127.0.0.1');
console.log('Node server running on port 8080');