2014-12-29 113 views
-1

我一直在使用net模塊從Node.js寫我自己的靜態http服務器。 這裏是我的代碼:使用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' 正在運行。你的'測試'方法正在運行,沒有機會讓每一個完成。 – Joe

回答

0

在關閉服務器之前,應關閉插槽。 還試圖在使用前延遲程序停止

嘗試增加: 'server.start' 有機會來完成(或`http.request` server.start`完成之前`)之前

req.end(); 
setTimeout(function(){server.stop(sev,function(e){e?(console.log(e)):(console.log("server  is closed"));}) 
},4000);