Reputation:
This question is related to my previous one:
node httpServer EADDRINUSE and next port
Currently, I do
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);
}
});
However, this code structure is hard to manage when things get complicated, and I perfer to write as follows:
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);
This appears more straightforwad to me, and actually easier to handle in complicated situations.
However, referring http://nodejs.org/api/http.html appears that an event 'open' does not exist.
Is there any corresponding event or it's not possible to write like this?
Thanks.
Upvotes: 6
Views: 5482