这个问题与我之前的问题有关:
node httpServer EADDRINUSE and next port
目前,我做
var port = 8000;
HTTPserver
.listen(port, function()
{
console.log('HTTP listening:' + port);
})
.on('error', function(err)
{
if (err.code === 'EADDRINUSE')
{
// port is currently in use
console.log('server Open error:' + port);
port++;
HTTPserver
.listen(port);
}
});
然而,当事情变得复杂时,这个代码结构难以管理,我更愿意写如下:
var port = 8000;
HTTPserver
.on('open', function()
{
console.log('HTTP listening:' + port);
})
.on('error', function(err)
{
if (err.code === 'EADDRINUSE')
{
// port is currently in use
console.log('server Open error:' + port);
port++;
HTTPserver.listen(port);
}
});
HTTPserver.listen(port);
这对我来说更直接,在复杂情况下实际上更容易处理。
但是,参考 http://nodejs.org/api/http.html似乎不存在“打开”事件。
是否有相应的事件,或者不可能这样写?
感谢。
答案 0 :(得分:5)
我认为您正在寻找listening事件:
.on('listening', function() {
console.log('HTTP listening:' + port);
})