Skip to content

Zeroconf for scala (multicast DNS service discovery)

License

Notifications You must be signed in to change notification settings

RustedBones/scout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)