Zeroconf for scala (multicast DNS service discovery)
Version | Release date | fs2 version | Scala versions |
---|---|---|---|
0.2.1 |
2023-01-10 | 3.4.0 |
3.2.1 |
0.2.0 |
2022-12-27 | 3.4.0 |
3.2.1 |
0.1.0 |
2021-01-13 | 2.5.0 |
2.13.4 , 2.12.12 |
libraryDependencies += "fr.davit" %% "scout" % "<version>"
import cats.effect.{IO, IOApp}
import fr.davit.scout.Zeroconf
import fr.davit.taxonomy.model.DnsMessage
import fr.davit.taxonomy.scodec.DnsCodec
import scodec.Codec
import java.net.InetAddress
import scala.concurrent.duration*
object App extends IOApp.Simple:
// service definition
val service = Zeroconf.Service("ipp", "tcp")
// Scanning for service instances
val instances = Zeroconf
.scan[IO](service)
.interruptAfter(50.seconds)
.compile
.toList
.unsafeRunSync()
// instance definition
val instance = Zeroconf.Instance(
service = service,
name = "Ed’s Party Mix",
port = 1010,
target = "eds-musicbox",
information = Map("codec" -> "ogg"),
addresses = Seq(InetAddress.getByName("169.254.150.84")) // use local address when left empty
)
// Registering an instance
Zeroconf.register[IO](instance)