У меня есть кнопка в моем внешнем интерфейсе, и я использую nodejs и экспресс в моем серверном бэкенде.У меня есть функция (по сути, управляющая Philips Hue API) на бэкэнде, и я бы хотел, чтобы она выполнялась при нажатии кнопки через запрос http.
Я пробовал разные методы.внутренний скрипт для элементов управления Philips Hue работает независимо, когда я извлекаю его и запускаю в git bash.Я думаю, что есть некоторые концептуальные ошибки или ошибки кодирования.
Кнопка HTML
<button id="pulse" type="button" class="btn btn-danger">Pulsing Lights</button>
Клиентская сторона JS
const pulseButton = document.getElementById("pulse");
pulseButton.addEventListener('click', function() {
fetch('/huePulseLight', {method: 'POST'})
.then(function(response) {
if(response.ok) {
console.log('Click was recorded');
return;
}
throw new Error('Request failed.');
})
.catch(function(error) {
console.log(error);
});
});
Бэкенд / Серверная сторона JS
const port = 3000;
const server = http.Server(app);
server.listen(process.env.PORT || 3000, function(){
console.log('Server running on port ' + port);
});
const app = express();
pulseLight = lightState.create().on().colorLoop();
function setPulseLight() {
nodeHueapi.setLightState(1, pulseLight, function (err, lights) {
if (err) throw err;
displayResult(lights);
});
nodeHueapi.setLightState(2, pulseLight, function (err, lights) {
if (err) throw err;
displayResult(lights);
});
nodeHueapi.setLightState(3, pulseLight, function (err, lights) {
if (err) throw err;
displayResult(lights);
});
}
app.post('/huePulseLight', function(req, res){
console.log("Pulse Light Set");
setPulseLight();
});