bonsoir 3.0.0 copy "bonsoir: ^3.0.0" to clipboard
bonsoir: ^3.0.0 copied to clipboard

A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.

Bonsoir is a Zeroconf library that allows you to discover network services and to broadcast your own. It's based on Android NSD and on Apple's popular framework Bonjour. In fact, Bonsoir can be translated into Good evening (and Bonjour into Good morning or Good afternoon depending on the current moment of the day).

Pub Likes Pub Popularity Pub Points

Preview #

Bonsoir preview

Code snippets #

Here is how you can broadcast your service using Bonsoir :

// Let's create our service !
BonsoirService service = BonsoirService(
  name: 'My wonderful service', // Put your service name here.
  type: '_wonderful-service._tcp', // Put your service type here. Syntax : _ServiceType._TransportProtocolName. (see http://wiki.ros.org/zeroconf/Tutorials/Understanding%20Zeroconf%20Service%20Types).
  port: 3030, // Put your service port here.
);

// And now we can broadcast it :
BonsoirBroadcast broadcast = BonsoirBroadcast(service: service);
await broadcast.ready;
await broadcast.start();

// ...

// Then if you want to stop the broadcast :
await broadcast.stop();

And here is how you can search for a broadcasted service :

// This is the type of service we're looking for :
String type = '_wonderful-service._tcp';

// Once defined, we can start the discovery :
BonsoirDiscovery discovery = BonsoirDiscovery(type: type);
await discovery.ready;

// If you want to listen to the discovery :
discovery.eventStream.listen((event) {
  if (event.type == BonsoirDiscoveryEventType.discoveryServiceFound) {
    print('Service found : ${event.service.toJson()}')
    event.service.resolve(discovery.serviceResolver);
  } else if (event.type == BonsoirDiscoveryEventType.discoveryServiceResolved) {
    print('Service resolved : ${event.service.toJson()}')
  } else if (event.type == BonsoirDiscoveryEventType.discoveryServiceLost) {
    print('Service lost : ${event.service.toJson()}')
  }
});

// Start discovery **after** having listened to discovery events
await discovery.start();

// Then if you want to stop the discovery :
await discovery.stop();

If you want a full example, don't hesitate to check this one on Github.

Final notes #

This plugin cannot be tested on an Android emulator (well it can, but the only services that you are able to discover are the ones broadcasted by your emulator).

Also, if you're building your app for iOS 14, you may have to edit your Info.plist file according to this answer on Apple Developer Forums.

The hand icon has been created by Vitaly Gorbachev.

Contributions #

You have a lot of options to contribute to this project ! You can :

110
likes
0
pub points
95%
popularity

Publisher

verified publisherskyost.eu

A Zeroconf library that allows you to discover network services and to broadcast your own. Based on Apple Bonjour and Android NSD.

Repository (GitHub)
View/report issues

Funding

Consider supporting this project:

ko-fi.com
paypal.me

License

unknown (license)

Dependencies

bonsoir_android, bonsoir_darwin, bonsoir_platform_interface, flutter

More

Packages that depend on bonsoir