如何检查NodeJS中的端口是否忙?

如何检查localhost 是否忙

有没有标准algorithm? 我正在考虑对该url发出http请求,并检查响应状态码是否不是404

你可以尝试启动一个服务器,无论是TCP或HTTP,没关系。 然后,您可以尝试开始侦听端口,如果失败,请检查错误代码是否为EADDRINUSE

 var net = require('net'); var server = net.createServer(); server.once('error', function(err) { if (err.code === 'EADDRINUSE') { // port is currently in use } }); server.once('listening', function() { // close the server if listening doesn't fail server.close(); }); server.listen(/* put the port to check here */); 

使用一次性事件处理程序,您可以将其封装到一个asynchronous检查函数中。

看看惊人的TCP端口使用的节点模块 !

 //Check if a port is open tcpPortUsed.check(port [, host]) //Wait until a port is no longer being used tcpPortUsed.waitUntilFree(port [, retryTimeMs] [, timeOutMs]) //Wait until a port is accepting connections tcpPortUsed.waitUntilUsed(port [, retryTimeMs] [, timeOutMs]) //and a few others! 

我已经使用这些function来检测我的Express服务器何时安全终止以及何时重新启动。

这将准确地报告端口是否绑定(不pipeSO_REUSEADDRSO_REUSEPORT ,如@StevenVachon所述)。

portscanner NPM模块将在范围内为您find空闲和使用的端口,如果您正在尝试查找打开的端口进行绑定,则此function更为有用。