2014-11-13 3 views
4

Я делаю http-запрос, который должен запускаться через каждые одну минуту. Ниже мой кодsetInterval in nodejs

var express = require("express"); 
var app = express(); 
var recursive = function() { 
    app.get('/', function (req, res) { 
     console.log(req); 
     //Some other function call in callabck 
     res.send('hello world'); 
    }); 
    app.listen(8000); 
    setTimeout(recursive, 100000); 
} 
recursive(); 

В соответствии с приведенным выше кодом, я должен получить ответ через каждые одну минуту. Но я получаю сообщение об ошибке: слушаю EADDRINUSE. Любая помощь в этом будет действительно полезна.

+1

Возможный дубликат [nodejs Error: listen EADDRINUSE] (http://stackoverflow.com/questions/9898372/nodejs-error-listen-eaddrinuse) –

+0

, но здесь im используется setInterval. Есть идеи по этому поводу? – user134414214

+0

ваш код запускает сервер с портом 8000 и устанавливает обработчик для обработки запроса на запрос '/'. Вам нужно сделать это только один раз. Еще один момент: вы на самом деле не звоните на ваш сервер, поэтому никакой реакции каждую минуту. –

ответ

6

Этот код делает HTTP запросы каждую минуту:

var http = require('http'); 

var options = { 
    host: 'example.com', 
    port: 80, 
    path: '/' 
}; 
function request() { 
    http.get(options, function(res){ 
    res.on('data', function(chunk){ 
     console.log(chunk); 
    }); 
    }).on("error", function(e){ 
    console.log("Got error: " + e.message); 
    }); 
} 
setInterval(request, 60000); 
2

ошибка EADDRINUSE выбрасывается, потому что вы не можете запустить сервер в тот же порт дважды

Она будет работать в следующем виде:

var express = require("express"), 
    app = express(), 
    recursive = function (req, res) { 
     console.log(req); 
     //Some other function call in callabck 
     res.send('hello world'); 
     setTimeout(recursive, 100000); 
    }; 
    app.get('/', recursive); 
    app.listen(8000); 
}