wankdanker / node-discover

Automatic and decentralized discovery and monitoring of nodejs instances with built in support for a variable number of master processes, service advertising and channel messaging.
229 stars 59 forks source link

Possible wrong examples in doc? #29

Open acefeel opened 7 years ago

acefeel commented 7 years ago

I tried hours by using the examples, not running at all. Then I find out maybe the example should call send in Discover()'s callback function. Please check.

var Discover = require('node-discover'); var d = Discover(function(){ //this will success. var success = d.send("someChannel", { message : "oh..." }); }); //outside the callback will cause destination array is undefined inside networks.js:153 // var success = d.send("someChannel", { message : "oh..." }); //also I try to running start() @ this point, it will emit a error "address already bind", cause Discover() already called one, maybe some prevention code should be here to accept multiply start() calls?

wankdanker commented 7 years ago

Good catch on two bugs.

To prevent the undefined array in networks.js, we should declare self.destination = []; around line 45. https://github.com/wankdanker/node-discover/blob/master/lib/network.js#L45

There is prevention code to prevent multiple calls to start(), but it's not enough. If you call start() two times sequentially it will not prevent it because running is set in the callback broadcast.start callback. So, we should track starting or something as well, or just say running=true as early as possible and set it to false if starting the network layer fails.

https://github.com/wankdanker/node-discover/blob/master/lib/discover.js#L246