2015-04-25 19 views
5

içinde bunu anlıyorum millet genel duruma ifadeleri için düzenleyebileceğiniz umuduyla buradayız çok özel olacak eğer kontrol edebilirim. Eğer "düğüm hata ayıklama" çalıştırdığınızda, nasıl bir liman dinlediğini veya kullanım

Şu anda, bir bağlantı olduğunu porta çalışılır, bir süreç ebeveynde Sonra port 5858. dinlemek için çoğaltılır. Bu liman kullanımda olduğundan

Ancak başka bir "düğüm ayıklama" oturum çalışan varsa, şu anda "düğüm ayıklama" asar.

Özellikle Gördüğünüz mesajdır:

$ node debug example/gcd.js 3 5 
< debugger listening on port 5858 > 
connecting... 

bir kendisine bağlamadan (bağlantı noktası kullanımda olduğunu tespit etmek için daha iyi olacağını kudreti o mevcut bağlanmaya çalıştığı başka bir istemci pisliği ayıklayıcı).

Düzeltme: Kabul edilen çözüm şu anda trepanjs.

Sen dinledi ediliyor portları tespit etmek için node-netstat module kullanmak mümkün olmalıdır da Node JS - How Can You Tell If A Socket Is Already Open With The Einaros WS Socket Module?

+0

olduğunu bir "EADDRINUSE" hatası alıp almadığınızı görün. Bu doğru fikri boyunca olduğu – robertklep

+0

@robertklep ederken, ben belirli kod arıyordum. – rocky

cevap

8

aşağıdaki bir varyasyonu kullandığım budur:

var net = require('net'); 
 

 
var portInUse = function(port, callback) { 
 
    var server = net.createServer(function(socket) { 
 
\t socket.write('Echo server\r\n'); 
 
\t socket.pipe(socket); 
 
    }); 
 

 
    server.listen(port, '127.0.0.1'); 
 
    server.on('error', function (e) { 
 
\t callback(true); 
 
    }); 
 
    server.on('listening', function (e) { 
 
\t server.close(); 
 
\t callback(false); 
 
    }); 
 
}; 
 

 
portInUse(5858, function(returnValue) { 
 
    console.log(returnValue); 
 
});

Daha da ciddi bir olan taahhüt gerçek denemek ve bağlantı noktasında dinleme ve edebilirsiniz https://github.com/rocky/trepanjs/commit/f219410d72aba8cd4e91f31fea92a5a09c1d78f8

2

bakınız. Ne yazık ki, sadece Windows ve Linux'u destekliyor gibi görünüyor. Ancak, OS X'i desteklemesi gereken değişiklikler, çok büyük görünmüyor. GÜNCELLEME: Şimdi OS X ... er MacOS ... er artık diyoruz ne olursa olsun destekler.

+0

Fiş için teşekkürler. Ben node-netstat'ın yazarıyım ve sadece OS X desteğine sahip olduğunu belirtmek istedim. – doogle

+1

Bilgi için teşekkürler. Cevabı güncelledim. – Trott