This plugin allows you to browse and publish ZeroConf/Bonjour/mDNS services from applications developed using PhoneGap/Cordova 3.0 or newer.
This is not a background service. When the cordova view is destroyed/terminated, publish and watch operations are stopped.
- [Android] listening on all multicast and non-loopback interfaces instead of first found IPv4 and first found IPv6
- [Android] fixing java.util.concurrent.RejectedExecutionException (BrowserManager.serviceAdded)
- [Android] re-registering while DNS entry is still cached causes IllegalStateException
- [Android] check that NetworkInterface.supportsMulticast
- [iOS] add Hostname.m to the target
- new getHostname function
- added parameter for domain
- added success/failure callbacks
- normalized service object
- more ipv6 support
In your application project directory:
cordova plugin add cordova-plugin-zeroconf
var zeroconf = cordova.plugins.zeroconf;
Returns this device's hostname.
zeroconf.getHostname(function success(hostname){
console.log(hostname); // ipad-of-becvert.local.
});
Publishes a new service.
zeroconf.register('_http._tcp.', 'local.', 'Becvert\'s iPad', 80, {
'foo' : 'bar'
}, function success(result){
var action = result.action; // 'registered'
var service = result.service;
});
Unregisters a service.
zeroconf.unregister('_http._tcp.', 'local.', 'Becvert\'s iPad');
Unregisters all published services.
zeroconf.stop();
Starts watching for services of the specified type.
zeroconf.watch('_http._tcp.', 'local.', function(result) {
var action = result.action;
var service = result.service;
/* service : {
'domain' : 'local.',
'type' : '_http._tcp.',
'name': 'Becvert\'s iPad',
'port' : 80,
'hostname' : 'ipad-of-becvert.local',
'ipv4Addresses' : [ '192.168.1.125' ],
'ipv6Addresses' : [ '2001:0:5ef5:79fb:10cb:1dbf:3f57:feb0' ],
'txtRecord' : {
'foo' : 'bar'
}
} */
if (action == 'added') {
console.log('service added', service);
} else {
console.log('service removed', service);
}
});
Stops watching for services of the specified type.
zeroconf.unwatch('_http._tcp.', 'local.')
Closes the service browser and stops watching.
zeroconf.close()
It depends on the JmDNS library
Many thanks to cambiocreative that got me started
Implements https://developer.apple.com/bonjour/
The MIT License