rustedbones / scout   0.2.1

Apache License 2.0 GitHub

Zeroconf for scala (multicast DNS service discovery)

Scala versions: 3.x 2.13 2.12

scout

Continuous Integration Maven Central Software License Scala Steward badge

Zeroconf for scala (multicast DNS service discovery)

Versions

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

Getting scout

libraryDependencies += "fr.davit" %% "scout" % "<version>"

Zeroconf

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)