bonvoyage

Seaport service discovery and registering via mDNS/Bonjour/zeroconf

npm install bonvoyage
12 downloads in the last month

bonvoyage Dependency Status

seaport is a great service for service discovery on a network, but how do you find the seaport server? Enter mDNS - this lets us broadcast the availability of a seaport server on the network.

Server

To advertise a seaport server, do the following:

var Seaport = require("seaport"),
    bonvoyage = require("bonvoyage");

// start seaport
var seaport = Seaport.createServer();
seaport.listen();

// publish bonvoyage advert
var bonvoyageServer = new bonvoyage.Server();
bonvoyageServer.publish(seaport);

Client

To register a service with a seaport server, do the following:

var bonvoyage = require("bonvoyage");

var bonvoyageClient = new bonvoyage.Client();
bonvoyageClient.register({
    role: "http",
    version: "1.0.0",
    createService: function(port) {
        var restServer = container.find("restServer");
        restServer.start(port);
    }
});

If seaport goes away and comes back, the service will be re-registered automagically on the same port with the same role and version without being re-created.

To find a seaport server, do the following:

var bonvoyage = require("bonvoyage");

var bonvoyageClient = new bonvoyage.Client();
bonvoyageClient.find(function(error, seaport) {

    // found seaport, now use it as normal
    seaport.get('http@1.0.x', function (services) {
        console.info("http://" + services[0].host + ":" + services[0].port);
    });
});

This will fire once when a seaport server is found on the network.

To be notified when seaport goes away and comes back, listen on the client for seaportUp and seaportDown events.

npm loves you