Open Skywalker13 opened 7 years ago
Hi,
In sock.js https://github.com/tj/axon/blob/master/lib/sockets/sock.js#L368 , the 'error' event of this.server is not handled then it's not possible to handle the EADDRINUSE error for example (when binding on a non-free port).
sock.js
'error'
this.server
EADDRINUSE
I'm doing ugly thing with domain like this:
domain
this._host = host; this._port = parseInt (port); /* Create domain in order to catch port binding errors. */ const domain = require ('domain').create (); domain.on ('error', err => { this._log.warn ( 'bus binding on %s:%d, error: %s', this._host, this._port, err.message ); if (err.code === 'EADDRINUSE') { this._port++; this._log.warn (`address in use, retrying on port ${this._port}`); setTimeout (() => { this._bind (callback); }, 0); return; } this._log.err ('this exception is fatal, we cannot continue...'); process.exit (1); }); /* Try binding in domain. */ domain.run (() => { this._bind (callback); });
_bind is using axon.socket (mode).bind ()
_bind
axon.socket (mode).bind ()
The 'error' server event should be exposed by the public API.
Regards
Hi,
In
sock.js
https://github.com/tj/axon/blob/master/lib/sockets/sock.js#L368 , the'error'
event ofthis.server
is not handled then it's not possible to handle theEADDRINUSE
error for example (when binding on a non-free port).I'm doing ugly thing with
domain
like this:The
'error'
server event should be exposed by the public API.Regards