service-discovery
Version:
Simple network discovery based on UDP multicast
123 lines (78 loc) • 2.38 kB
Markdown
node-discovery
==============
Simple UDP multicast node discovery
Emits events with name of catched service description
Custom event '\*' catches all messages (except own or force)
Example
-------
~~~~ {.javascript}
var Description = require('../lib/service').Description;
var Listener = require('../lib/service').Listener;
//Create listener of announced notifications
var listener = new Listener();
//Generate unique client name
var serviceName = 'service-' + Math.random();
//Create new service
var service = new Description(serviceName);
//Add some meta info
service.attr('author', 'reddec');
//Add listeners for all messages
listener.on('*', function(serviceName, ip, data) {
console.log("Service", serviceName, "found from", ip, ":", data);
});
~~~~
API
---
Constants
=========
- `MULTICAST_PORT = 22000`
- `MULTICAST_IP = '239.155.155.150'`
- `MULTICAST_INTERVAL = 2000`
class Description
=================
Contains description of service and announce it periodically
[constructor]
-------------
Description(name, port = MULTICAST_PORT, ip = MULTICAST_IP, interval = INTERVAL)
Create new instance of service description and starts announcing
- `name {string}` Name of service
- `port {number}` Multicast port
- `ip {string}` Multicast IP
- `interval {number}` Sending interval in ms
attr
----
attr:(name, data)
Add attribute of description. Same name will be replaced
- `name {string}` Name of attribute
- `data {object}` Serializeable description
- return itself
close
-----
close:()
Close sockets and remove all listeners and timers
- return itself
notify
------
notify:()
Send self description to multicast group
- return itself
class Listener extends EventEmitter
===================================
Simple service discovery over UDP multicast. Emits events with name of
catched service description. Custom event '\*' catches all messages
[constructor]
-------------
Listener(done, port = MULTICAST_PORT, ip = MULTICAST_IP, interval = INTERVAL)
Create new instance of service finder
- `done {function(Listener)}` Ready callback
- `port {number}` Multicast port
- `ip {string}` Multicast IP
on\_message
-----------
on_message:(msg, rinfo)
Listener function for incoming UDP messages
close
-----
close:()
Close sockets and remove all listeners and timers
- return itself