2014-12-29 3 views
-1

Я писал свой собственный статический http-сервер, используя net модуль от Node.js. Вот мой код:Использование http.request генерирует ошибку

var options = { 
    hostname: 'localhost', 
    port: 8000, 
    path: '/read.txt', 
    httpVersion : 1.1, 
    method: 'GET', 
    headers:{ 
    'Content-Type':'text/plain', 
    'connection' : 'keep-alive' 
} 
}; 

function test(){ 
    var sev = server.start(8000,"./folder",function(e){ 
     e?(console.log(e)):(console.log("server is connected in port 8888")); 
    }); 
    var req = http.request(options, function(res) {}); 
    req.on('error', function(e) { 
     console.log('problem with request: ' + e.message); 
     }); 
    server.stop(sev,function(e){e?(console.log(e)):(console.log("server is closed"));}) 
} 
test() 

Вот функция остановка от сервера модуля:

exports.stop = function(serverID,callback){ 
    serverID.close(); 
    callback(); 
} 

Но когда я запускаю его он показывает сообщение: проблема с запросом: подключите ECONNREFUSED. Я не могу найти проблему. Возможно ли, что проблема связана с версией узла?

+1

Похоже, 'server.stop' работает, прежде чем 'server.start' имел шанс закончить (или '' http.request', прежде чем заканчивается server.start'). Ваш метод 'test' запускает вещи без возможности дать каждому финишу. – Joe

ответ

0

Перед тем, как закрыть сервер, вы должны закрыть розетку. Также попробуйте задержать программу перед использованием stop.

Попробуйте добавить:

req.end(); 
setTimeout(function(){server.stop(sev,function(e){e?(console.log(e)):(console.log("server  is closed"));}) 
},4000); 
Смежные вопросы