@devioarts/capacitor-mdns
v0.1.0
Published
mDNS plugin for CapacitorJS
Maintainers
Readme
@devioarts/capacitor-mdns
mDNS plugin for Capacitor that supports Bonjour/mDNS advertisements and discovery on iOS, Android, Electron, and a safe web fallback.
Supported platforms: ✓ iOS ✓ Android ✓ Electron ✓ Web fallback
The in-repository playground is the example app used during development.
Install
npm install @devioarts/capacitor-mdns
npx cap syncUsage
import { mDNS } from '@devioarts/capacitor-mdns';
const runtime = await mDNS.getPluginPlatform();
await mDNS.startBroadcast({ type: '_http._tcp.', name: 'MyService', port: 9100 });
const result = await mDNS.discover({ type: '_http._tcp.', timeout: 3000 });
await mDNS.stopBroadcast();Platform Setup
Android requires mDNS/network permissions in AndroidManifest.xml; the plugin also declares them
so they are merged during sync. iOS requires local network keys in Info.plist.
Electron support is intended for devioarts/capacitor-electron
and uses metadata exported from @devioarts/capacitor-mdns/electron/settings.
Detailed setup lives in:
API
Public API surface of the Capacitor mDNS plugin.
getPluginPlatform()
getPluginPlatform() => Promise<MdnsPluginPlatformResult>Return the platform implementation currently serving plugin calls.
Returns: Promise<MdnsPluginPlatformResult>
startBroadcast(...)
startBroadcast(options: MdnsBroadcastOptions) => Promise<MdnsBroadcastResult>Start advertising a Bonjour/mDNS service.
| Param | Type | Description |
| ------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------ |
| options | MdnsBroadcastOptions | - {@link MdnsBroadcastOptions} |
Returns: Promise<MdnsBroadcastResult>
stopBroadcast()
stopBroadcast() => Promise<MdnsStopResult>Stop advertising the currently registered service (no-op if none).
Returns: Promise<MdnsStopResult>
discover(...)
discover(options?: MdnsDiscoverOptions | undefined) => Promise<MdnsDiscoverResult>Discover services of a given type and optionally filter by instance name.
| Param | Type | Description |
| ------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------- |
| options | MdnsDiscoverOptions | - {@link MdnsDiscoverOptions} |
Returns: Promise<MdnsDiscoverResult>
Interfaces
MdnsPluginPlatformResult
Result of getPluginPlatform(). Useful for validating that calls are routed through the expected platform bridge.
| Prop | Type | Description |
| -------------- | ----------------------------------------------------------------- | -------------------------------------------------- |
| platform | MdnsPluginPlatform | Platform implementation that produced this result. |
MdnsBroadcastResult
Result of startBroadcast(). Indicates whether advertising is active
and the final service name. On failure, error is true and errorMessage
describes the issue.
| Prop | Type | Description |
| ------------------ | --------------------------- | -------------------------------------------------------------------- |
| error | boolean | True if the operation failed. |
| errorMessage | string | null | Error description or null on success. |
| name | string | Final (possibly uniquified) service instance name. Empty on failure. |
| publishing | boolean | Whether the advertiser is currently active. |
MdnsBroadcastOptions
Options for starting a Bonjour/mDNS advertisement.
| Prop | Type | Description |
| ---------- | ------------------------------------------- | --------------------------------------------- |
| type | string | Service type (including the trailing dot). |
| name | string | Service instance name. |
| port | number | TCP port to advertise. |
| txt | MdnsTxt | Optional TXT key–value pairs (UTF-8 strings). |
MdnsStopResult
Result of stopBroadcast(). Indicates whether the advertiser is active after the call (normally false) and includes error information.
| Prop | Type | Description |
| ------------------ | --------------------------- | ------------------------------------------------------------------- |
| error | boolean | True if an error occurred while stopping. |
| errorMessage | string | null | Error description or null on success. |
| publishing | boolean | Whether the advertiser remains active (should be false on success). |
MdnsDiscoverResult
Result of discover(). Contains normalized services and error information.
| Prop | Type | Description |
| ------------------- | --------------------------- | ------------------------------------------------------------------------------ |
| error | boolean | True if discovery encountered an error (partial results may still be present). |
| errorMessage | string | null | Error description or null when no error occurred. |
| servicesFound | number | Convenience count equal to services.length. |
| services | MdnsService[] | Normalized list of discovered services. |
MdnsService
Normalized description of a discovered Bonjour/mDNS service. Returned from {@link mDNSPlugin.discover}.
| Prop | Type | Description |
| ------------ | ------------------------------------------- | ----------------------------------------------------------------------------------------- |
| name | string | Instance name of the service (may be uniqued by the OS, e.g. "My App (2)"). |
| type | string | Full service type including the trailing dot, e.g. "_http._tcp.". |
| domain | string | Service domain; typically "local.". |
| port | number | TCP port the service advertises. |
| hosts | string[] | Resolved numeric IP addresses (IPv4/IPv6). |
| txt | MdnsTxt | TXT dictionary (key → value). Usually present on iOS; Android NSD does not populate this. |
MdnsDiscoverOptions
Options for Bonjour/mDNS discovery.
| Prop | Type | Description |
| ------------- | -------------------- | ---------------------------------------------------------------- |
| type | string | Service type (including the trailing dot). |
| name | string | Optional instance name filter (prefix-safe). |
| timeout | number | Discovery timeout in milliseconds. |
| useNW | boolean | iOS-only hint to use NWBrowser instead of NetServiceBrowser. |
Type Aliases
MdnsPluginPlatform
Runtime implementation that handled a plugin call.
'ios' | 'android' | 'electron' | 'web'
MdnsTxt
Key–value map for TXT records of a Bonjour/mDNS service. Values are UTF-8 strings; binary payloads are not supported by this API.
Record<string, string>
Record
Construct a type with a set of properties K of type T
{ [P in K]: T; }
