4 releases
0.2.2 | Sep 15, 2021 |
---|---|
0.2.1 | Sep 7, 2021 |
0.2.0 | Sep 6, 2021 |
0.1.0 | Aug 27, 2021 |
#160 in macOS and iOS APIs
Used in 2 crates
79KB
1.5K
SLoC
async-zeroconf
async-zeroconf
is a crate to register ZeroConf services and provides a way of
keeping the service alive using Tokio rather than a synchronous event loop.
Examples
Publishing a service
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
// Create a service description
let service = async_zeroconf::Service::new("Server", "_http._tcp", 80);
// Publish the service
let service_ref = service.publish().await?;
// Service kept alive until service_ref dropped
Ok(())
}
Browsing for services
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
let mut browser = async_zeroconf::ServiceBrowserBuilder::new("_http._tcp");
let mut services = browser
.timeout(tokio::time::Duration::from_secs(2))
.browse()?;
while let Some(Ok(v)) = services.recv().await {
println!("Service = {}", v);
}
Ok(())
}
Resolving a service
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
let mut browser = async_zeroconf::ServiceBrowserBuilder::new("_http._tcp");
let mut services = browser
.timeout(tokio::time::Duration::from_secs(2))
.browse()?;
while let Some(Ok(v)) = services.recv().await {
let resolved_service = async_zeroconf::ServiceResolver::r(&v).await?;
println!("Service = {}", resolved_service);
}
Ok(())
}
Changelog
- 0.2.2
- Add accessors for
host
/txt
onService
- Add accessors for
- 0.2.1
- Fix minor issue with C types
- 0.2.0
- Fix issues with errors on publishing a service
publish
is now an async function as it waits for errors
- 0.1.0
- Initial version
License
async-zeroconf
can be licensed under the MIT license or the Apache 2.0 license.
Dependencies
~3–14MB
~165K SLoC