2012-05-23 82 views
3

我正在爲我工​​作的託管公司寫一個狀態檢查器,我們想知道如何在可能的情況下使用nodejs檢查端口的狀態。如果沒有,你可以提出任何其他想法,如使用PHP和閱讀標準輸出?NodeJS ping通端口

回答

9

是的,這很容易使用net模塊。這是一個簡短的例子。

var net = require('net'); 
var hosts = [['google.com', 80], ['stackoverflow.com', 80], ['google.com', 444]]; 
hosts.forEach(function(item) { 
    var sock = new net.Socket(); 
    sock.setTimeout(2500); 
    sock.on('connect', function() { 
     console.log(item[0]+':'+item[1]+' is up.'); 
     sock.destroy(); 
    }).on('error', function(e) { 
     console.log(item[0]+':'+item[1]+' is down: ' + e.message); 
    }).on('timeout', function(e) { 
     console.log(item[0]+':'+item[1]+' is down: timeout'); 
    }).connect(item[1], item[0]); 
}); 

顯然它可以改進。例如,如果主機無法解析,它現在會中斷。

+0

任何人都有一個想法如何使用回調來返回多個服務器的狀態? – phpmydev