| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- # bonjour
- A Bonjour/Zeroconf protocol implementation in pure JavaScript. Publish
- services on the local network or discover existing services using
- multicast DNS.
- [](https://travis-ci.org/watson/bonjour)
- [](https://github.com/feross/standard)
- ## Installation
- ```
- npm install bonjour
- ```
- ## Usage
- ```js
- var bonjour = require('bonjour')()
- // advertise an HTTP server on port 3000
- bonjour.publish({ name: 'My Web Server', type: 'http', port: 3000 })
- // browse for all http services
- bonjour.find({ type: 'http' }, function (service) {
- console.log('Found an HTTP server:', service)
- })
- ```
- ## API
- ### Initializing
- ```js
- var bonjour = require('bonjour')([options])
- ```
- The `options` are optional and will be used when initializing the
- underlying multicast-dns server. For details see [the multicast-dns
- documentation](https://github.com/mafintosh/multicast-dns#mdns--multicastdnsoptions).
- ### Publishing
- #### `var service = bonjour.publish(options)`
- Publishes a new service.
- Options are:
- - `name` (string)
- - `host` (string, optional) - defaults to local hostname
- - `port` (number)
- - `type` (string)
- - `subtypes` (array of strings, optional)
- - `protocol` (string, optional) - `udp` or `tcp` (default)
- - `txt` (object, optional) - a key/value object to broadcast as the TXT
- record
- IANA maintains a [list of official service types and port
- numbers](http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml).
- #### `bonjour.unpublishAll([callback])`
- Unpublish all services. The optional `callback` will be called when the
- services have been unpublished.
- #### `bonjour.destroy()`
- Destroy the mdns instance. Closes the udp socket.
- ### Browser
- #### `var browser = bonjour.find(options[, onup])`
- Listen for services advertised on the network. An optional callback can
- be provided as the 2nd argument and will be added as an event listener
- for the `up` event.
- Options (all optional):
- - `type` (string)
- - `subtypes` (array of strings)
- - `protocol` (string) - defaults to `tcp`
- - `txt` (object) - passed into [dns-txt
- module](https://github.com/watson/dns-txt) contructor. Set to `{
- binary: true }` if you want to keep the TXT records in binary
- #### `var browser = bonjour.findOne(options[, callback])`
- Listen for and call the `callback` with the first instance of a service
- matching the `options`. If no `callback` is given, it's expected that
- you listen for the `up` event. The returned `browser` will automatically
- stop it self after the first matching service.
- Options are the same as given in the `browser.find` function.
- #### `Event: up`
- Emitted every time a new service is found that matches the browser.
- #### `Event: down`
- Emitted every time an existing service emmits a goodbye message.
- #### `browser.services`
- An array of services known by the browser to be online.
- #### `browser.start()`
- Start looking for matching services.
- #### `browser.stop()`
- Stop looking for matching services.
- #### `browser.update()`
- Broadcast the query again.
- ### Service
- #### `Event: up`
- Emitted when the service is up.
- #### `Event: error`
- Emitted if an error occurrs while publishing the service.
- #### `service.stop([callback])`
- Unpublish the service. The optional `callback` will be called when the
- service have been unpublished.
- #### `service.start()`
- Publish the service.
- #### `service.name`
- The name of the service, e.g. `Apple TV`.
- #### `service.type`
- The type of the service, e.g. `http`.
- #### `service.subtypes`
- An array of subtypes. Note that this property might be `null`.
- #### `service.protocol`
- The protocol used by the service, e.g. `tcp`.
- #### `service.host`
- The hostname or ip address where the service resides.
- #### `service.port`
- The port on which the service listens, e.g. `5000`.
- #### `service.fqdn`
- The fully qualified domain name of the service. E.g. if given the name
- `Foo Bar`, the type `http` and the protocol `tcp`, the `service.fqdn`
- property will be `Foo Bar._http._tcp.local`.
- #### `service.txt`
- The TXT record advertised by the service (a key/value object). Note that
- this property might be `null`.
- #### `service.published`
- A boolean indicating if the service is currently published.
- ## License
- MIT
|