https://github.com/rustedbones/scout
Zeroconf for scala (multicast DNS service discovery)
https://github.com/rustedbones/scout
cats-effect dns-sd scala zeroconf
Last synced: 3 months ago
JSON representation
Zeroconf for scala (multicast DNS service discovery)
- Host: GitHub
- URL: https://github.com/rustedbones/scout
- Owner: RustedBones
- License: apache-2.0
- Created: 2020-05-23T14:41:17.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-08-19T19:25:59.000Z (11 months ago)
- Last Synced: 2025-03-24T04:22:00.247Z (4 months ago)
- Topics: cats-effect, dns-sd, scala, zeroconf
- Language: Scala
- Homepage:
- Size: 63.5 KB
- Stars: 3
- Watchers: 0
- Forks: 1
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# scout
[](https://github.com/RustedBones/scout/actions/workflows/ci.yml)
[](https://maven-badges.herokuapp.com/maven-central/fr.davit/scout_3)
[](LICENSE)
[](https://scala-steward.org)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
```sbt
libraryDependencies += "fr.davit" %% "scout" % ""
```## Zeroconf
```scala
import cats.effect.{IO, IOApp}
import fr.davit.scout.Zeroconf
import fr.davit.taxonomy.model.DnsMessage
import fr.davit.taxonomy.scodec.DnsCodec
import scodec.Codecimport 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)
```