Я пытаюсь создать цикл, который будет запускать мой сервер, пинговать Arduino, который будет возвращать данные, когда он получит пакет от моего IP.У меня уже есть коллекция mongoDB, работающая с данными, и я просто застрял в этой точке, когда я хотел бы, чтобы мой сервер начинал пинговать arduino каждые несколько секунд с момента запуска.
Примечание: это действительно моя первая попыткадействительно понимает асинхронный JS и, вероятно, является просто ошибкой нуба.
Код:
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const clientPing = dgram.createSocket('udp4');
const pinging = true;
function ping() {
return new Promise ((resolve, reject) => {
// This chunk
clientPing.send("Hi Uno", 8888, 'xxx.xx.xx.xxx', (err) => {
clientPing.close();
});
// When run on it's own successfully pings the arduino
const error = false;
if(error == true) {
reject('Error');
} else {
resolve('Pinged');
}
});
}
//Working ping
ping().then().catch(err => console.log(err));
Все вышеперечисленное должно было служить лишь простым доказательством того, что обещание работает и успешно выполняетпакет udp к цели.
function loop() {
while(pinging == true) {
setTimeout(() => {
ping().then().catch(err => console.log(err));
console.log('Pinged');
}, 3000);
}
}
Остальные это просто разные комбинации того, как я пытался решить проблему здесь.Насколько я могу судить, у меня нет утечки памяти, поскольку цикл работает просто без увеличения потребления ресурсов.
function loop() {
console.log("entered loop")
while(pinging == true) {
setTimeout(() => {
clientPing.send("Hi Uno", 8888, 'xxx.xx.xx.xxx', (err) => {
clientPing.close();
});
console.log('Pinged');
}, 3000);
}
}
Этот был предназначен для запуска только кода для ping без использования обещания.но все равно не дает желаемого результата.Файл console.log напечатан выше, но, похоже, он никогда не запускает тайм-аут.
loop();
Это просто запускает одну из двух loop()
функций.
do {
setTimeout(() => {
ping().then().catch(err => console.log(err));
console.log("pinged");
}, 2000)
} while(pinging == true)
НаконецЯ думал, что попробую do
, но также безуспешно.
Если все они будут вставлены в документ последовательно, он создаст мой файл.Просто раскомментируйте / закомментируйте каждый раздел по мере необходимости.
Я просто упускаю что-то очевидное или есть что-то довольно сложное, что мешает этому работать?
Спасибо!