2016-11-15 4 views
0

Я создаю приложение в Nodejs, используя среду Expressjs.Как остановить скрипт интервала на основе узла?

Я попытался выполнить какой-либо скрипт через каждую минуту, используя метод setInterval() JavaScript.

Когда я запускаю свой сервер на node app.js, сценарий запускается успешно. Но когда я останавливаю сервер на Ctrl+c и пытаюсь его перезапустить, он говорит, что 3000 (мой серверный порт) уже используется.

Я не могу перезагрузить свой сервер и не получить доступ к моему сайту. Я использую Ubuntu.

Я использовал все следующие команды, но это не останавливается.

  1. термоблока -к 3000/TCP

  2. убить processNumber

  3. killall узел

Код:

router.get("/trackplayers", function(req, res, next) { 
    // Run in every minute 
    setInterval(function(){ 
     console.log('Players tracking is under process..'); 
    }, 60000); 
}); 

Заранее спасибо!

+1

Если вставить код поможет .. но на мой understading вместо заданного интервала лучше мы идем с settimout с перезвонить .. Что с помощью settimout вы сможете выполнить функцию сразу выполнение снова завершено в функции обратного вызова создать новое решение. –

+0

После нажатия 'Ctrl + c', процесс все еще работает, когда вы запускаете' ps aux'? –

+0

нет процесса, когда я набираю ps aux или ps aux | grep node – Tahir

ответ

0

Не забудьте полностью выйти из процесса. Следующий код будет изящно прекратить экспресс-заявку.

var express = require("express"); 
var app = express(); 
var server = app.listen(3000); 
// Respond to 'Ctrl+C' 
process.on("SIGINT", function() { 
    // stop accepting connections 
    server.close(function() { 
    // connections are closed 
    // exit the process 
    process.exit(0); 
    }); 
}); 
// Server is shutting down 
process.on("SIGTERM", function() { 
    // stop accepting connections 
    server.close(function() { 
    // connections are closed 
    // exit the process 
    process.exit(0); 
    }); 
}); 
+0

Спасибо всем! Помогает – Tahir