0.0.2 • Published 11 months ago

@laravelka/capacitor-nsd v0.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

@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

0.0.2

11 months ago

0.0.1

11 months ago