Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/balthazar/react-native-zeroconf
:satellite: Discover Zeroconf services using react-native
https://github.com/balthazar/react-native-zeroconf
broadcast network react react-native zeroconf
Last synced: 11 days ago
JSON representation
:satellite: Discover Zeroconf services using react-native
- Host: GitHub
- URL: https://github.com/balthazar/react-native-zeroconf
- Owner: balthazar
- License: mit
- Created: 2015-10-24T17:25:19.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-05T16:49:41.000Z (6 months ago)
- Last Synced: 2024-10-30T02:55:28.999Z (14 days ago)
- Topics: broadcast, network, react, react-native, zeroconf
- Language: Java
- Homepage:
- Size: 1.5 MB
- Stars: 220
- Watchers: 8
- Forks: 98
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# react-native-zeroconf
> Basic Zeroconf implementation for React-native
Get running services advertizing themselves using Zeroconf implementations like Avahi, Bonjour or NSD.
### Install
yarn add react-native-zeroconf
# for react-native < 0.60 only (all platforms):
react-native link
# for ios (when using CocoaPods):
(cd ios && pod install)
# for macOS (when using CocoaPods):
(cd macos && pod install)You can look at [the wiki](https://github.com/Apercu/react-native-zeroconf/wiki) if you prefer a manual install.
TXT records will be available on iOS and Android >= 7.
For Android please ensure your manifest is requesting all necessary permissions.
```xml
```
### IOS 14 Permissions
IOS 14 requires you to specify the services you want to scan for and a description for what you're using them.In your `info.plist` add the following strings:
```xml
NSBonjourServices
my_service._tcp.
my_other_service._tcp.
NSLocalNetworkUsageDescription
Describe why you want to use local network discovery here
```### Example
Take a look at the [example folder](./example). Install the dependencies, run `node server.js` and launch the project.
### API
```javascript
import Zeroconf from 'react-native-zeroconf'
const zeroconf = new Zeroconf()
```##### Methods
###### `scan(type = 'http', protocol = 'tcp', domain = 'local.')` Start the zeroconf scan
This will initialize the scan from the `Zeroconf` instance. Will stop another scan if any is running.
###### `stop()` Stop the scan
If any scan is running, stop it. Otherwise do nothing.
###### `getServices()` Returns resolved services
Will return all names of services that have been resolved.
###### `removeDeviceListeners()` Remove listeners
Allow you to clean the listeners, avoiding potential memory leaks ([#33](https://github.com/Apercu/react-native-zeroconf/issues/33)).
###### `addDeviceListeners()` Add listeners
If you cleaned the listeners and need to get them back on.
###### `publishService(type, protocol, domain, name, port, txt)` Publish a service
This adds a service for the current device to the discoverable services on the network.
`domain` should be the domain the service is sitting on, dot suffixed, for example `'local.'`
`type` should be both type and protocol, underscore prefixed, for example `'_http._tcp'`
`name` should be unique to the device, often the device name
`port` should be an integer
`txt` should be a hash, for example `{"foo": "bar"}`###### `unpublishService(name)` Unpublish a service
This removes a service from those discoverable on the network.
`name` should be the name used when publishing the service
##### Events
```javascript
zeroconf.on('start', () => console.log('The scan has started.'))
```###### `start` Triggered on scan start
###### `stop` Triggered on scan stop
###### `found` Triggered when a service is foundBroadcast a service name as soon as it is found.
###### `resolved` Triggered when a service is resolved
Broadcast a service object once it is fully resolved
```json
{
"host": "XeroxPrinter.local.",
"addresses": [
"192.168.1.23",
"fe80::aebc:123:ffff:abcd"
],
"name": "Xerox Printer",
"fullName": "XeroxPrinter.local._http._tcp.",
"port": 8080
}
```###### `remove` Triggered when a service is removed
Broadcast a service name removed from the network.
###### `update` Triggered either when a service is found or removed
###### `error` Triggered when an error occurs