@laravelka/capacitor-nsd v0.0.2
@satoru/capacitor-nsd
Capacitor плагин для работы с Network Service Discovery (NSD) в локальной сети. Позволяет обнаруживать устройства и обмениваться данными между ними без необходимости в интернет-соединении.
Установка
npm install @satoru/capacitor-nsd
npx cap syncРазработка
Требования
- Node.js 14+
- npm 6+
- Android Studio и Android SDK для Android разработки
- Xcode 12+ для iOS разработки (только macOS)
Сборка
npm install
npm run buildПроверка
# На Windows
npm run verify
# На macOS (включая iOS)
npm run verify:iosКонфигурация
Android
Добавьте следующие разрешения в android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />iOS
Специальная конфигурация не требуется. Плагин использует Network.framework, который доступен по умолчанию.
API
Методы
registerService(options: { serviceName: string, serviceType: string, port: number })
Регистрирует сервис в локальной сети.
await CapacitorNsd.registerService({
serviceName: "MyService",
serviceType: "_http._tcp.",
port: 8080
});unregisterService()
Отменяет регистрацию сервиса.
await CapacitorNsd.unregisterService();startDiscovery(options: { serviceType: string })
Начинает поиск сервисов указанного типа в локальной сети.
await CapacitorNsd.startDiscovery({
serviceType: "_http._tcp."
});stopDiscovery()
Останавливает поиск сервисов.
await CapacitorNsd.stopDiscovery();getDiscoveredServices()
Возвращает список найденных сервисов.
const { services } = await CapacitorNsd.getDiscoveredServices();resolveService(options: { serviceName: string, serviceType: string })
Подключается к выбранному сервису.
const serviceInfo = await CapacitorNsd.resolveService({
serviceName: "MyService",
serviceType: "_http._tcp."
});startWebSocketServer(options: { port: number })
Запускает WebSocket сервер для обмена данными.
await CapacitorNsd.startWebSocketServer({
port: 8080
});stopWebSocketServer()
Останавливает WebSocket сервер.
await CapacitorNsd.stopWebSocketServer();sendData(options: { data: string })
Отправляет данные подключенному устройству.
await CapacitorNsd.sendData({
data: JSON.stringify({ message: "Hello!" })
});События
dataReceived
Событие, возникающее при получении данных.
CapacitorNsd.addListener('dataReceived', (data: { data: string }) => {
console.log('Получены данные:', data.data);
});Пример использования
Устройство A (Сервер)
// Регистрация сервиса
await CapacitorNsd.registerService({
serviceName: "MyService",
serviceType: "_http._tcp.",
port: 8080
});
// Запуск WebSocket сервера
await CapacitorNsd.startWebSocketServer({
port: 8080
});
// Прослушивание входящих сообщений
CapacitorNsd.addListener('dataReceived', (data) => {
console.log('Получены данные:', data.data);
});Устройство B (Клиент)
// Поиск сервисов
await CapacitorNsd.startDiscovery({
serviceType: "_http._tcp."
});
// Получение списка сервисов
const { services } = await CapacitorNsd.getDiscoveredServices();
// Подключение к сервису
await CapacitorNsd.resolveService({
serviceName: services[0].serviceName,
serviceType: services[0].serviceType
});
// Отправка данных
await CapacitorNsd.sendData({
data: JSON.stringify({ message: "Hello from client!" })
});Поддерживаемые платформы
- Android
- iOS
Лицензия
MIT