2013-05-22 59 views
2

我正在創建一個套接字通過檢查器。nodejs - 如何測試遠程套接字是否打開

基本上,我啓動了一個套接字服務器(net.createServer)和一個套接字客戶端(net.connect)。出於測試目的,我沒有等待端點套接字。

我想測試端點套接字是否可用。如果不是,nodejs應該等到套接字可用。

var net = require('net'); 
var inbound = net.createServer(); 
var outbound = net.connect({ 
    port: 8193 
}); 

inbound.listen(8192, function() { //'listening' listener 
    address = inbound.address(); 
    console.log('Server started on %j', address); 
}); 

inbound.on('connection', function (insock, outbound) { 
    console.log('CONNECTED ' + insock.remoteAddress + ':' + insock.remotePort); 
    insock.on('data', function (data, outbound) { 
     outbound.write(data); 
     console.log('DATA ' + data); 
    }); 
}); 

回答

1

測試是否有任何資源可用的最佳方法是嘗試使用它。預測試有很多反對意見:

  1. 如果它測試與實際使用不同的東西,它可能會產生不正確的答案。
  2. 如果它測試與實際使用相同的東西,它只是浪費多餘。
  3. 這種情況在測試和使用之間可能會改變。
+0

我絕對測試它,但我不知道如何在遠程端口未打開時恢復node.js應用程序。 Nodejs拋出一個「錯誤:連接ECONNREFUSED」 – extensa5620

+0

這就是如果你只是試圖使用它會發生的事情。無論解決方案是什麼,它都是'嘗試使用它'的情況。您不需要兩次編寫相同的代碼。 – EJP

+2

使用'outbound.on('error',...)'來捕獲這些錯誤,而不是讓Node發生崩潰。 – robertklep