https://github.com/lacyrhoades/harold
UDP-based discoverability tools across Node/Swift
https://github.com/lacyrhoades/harold
gadgets iot networking node swift udp
Last synced: 11 months ago
JSON representation
UDP-based discoverability tools across Node/Swift
- Host: GitHub
- URL: https://github.com/lacyrhoades/harold
- Owner: lacyrhoades
- License: mit
- Created: 2017-06-27T22:46:35.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2019-03-25T13:38:59.000Z (over 7 years ago)
- Last Synced: 2025-07-29T22:50:25.413Z (11 months ago)
- Topics: gadgets, iot, networking, node, swift, udp
- Language: Swift
- Homepage:
- Size: 192 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Harold
### UDP-based discoverability tool. A way to start conversations in your projects.
Say hello to all devices on your subnet at once, without having to find or type in IP addresses.
* **Easy UDP messages**: Send fast broadcasts to all local clients with a string body. This string message body could be anything; JSON, for example, or it could just be "Hello". The message can be at most about 1400 characters. The recipient gets the sender's IP for free, so don't bother including that.
* **Zero configuration integration between devices**: When a device comes on WiFi (i.e. iPad, Raspberry Pi, etc.) it will be assigned an address. The first step in setting up local devices is often finding or configuring the device address information. With Harold you can simply advertise availability as an initial volley and the recipient can decide to initiate a two-way conversation from there.
* **iOS devices and hardware gadgets**: Talk directly from iOS-to-iOS or integrate Node.js projects talking Swift-to-Node or vice-versa.
* **Bonjour-ish**: For more serious use-cases check out Bonjour.
## Say hello from Node.js
```node
var broadcaster = require('harold')()
broadcaster.setupBroadcasting()
broadcaster.broadcast("Hello!!") // goes to everyone on the subnet
```
## Get messages in Swift
```Swift
self.scanner = Harold()
scanner?.addListener(self)
func haroldReceived(fromHost host: String, message: String) {
print(host) // 192.168.1...
print(message) // "Hello!!"
}
```
## Say hello from Swift
```Swift
var broadcaster = Harold()
broadcaster.setupBroadcast()
broadcaster.broadcast(message: "Hello!!")
```
## Get messages in Node.js
```node
var listener = new require('harold')()
listener.listen(function (host, message) {
console.log(host) // 10.0.1.2 etc
console.log(message) // "Hello!!"
})
```
or
```node
var listener = new require('harold')()
listener.on('message', function (host, message) {
console.log(host) // 10.0.1.2 etc
console.log(message) // "Hello!!"
})
listener.listen()
```