Spec-Zone.ru › Hammerspoon

hs.bonjour.service

Представляет записи служб, которые обнаруживаются или публикуются модулем hs.bonjour.

Этот модуль позволяет вам изучить подробности обнаруженных служб, включая IP-адреса и текстовые записи, а также опубликовать свои собственные объявления многоадресной рассылки DNS для служб на вашем компьютере. Это может быть полезно для рекламы сетевых служб, предоставляемых другими модулями Hammerspoon или другими приложениями на вашем компьютере, которые еще не публикуют свои собственные объявления.

Этот модуль не позволит вам публиковать записи прокси для других хостов в вашей локальной сети. Рассматриваются дополнительные подмодули, которые могут решить эту ограничение, а также предоставить дополнительные функции, доступные с библиотекой dns-sd от Apple, но в настоящее время нет оценочного срока.

Обзор API

  • Константы - полезные значения, которые нельзя изменить
    • serviceTypes
  • Конструкторы - вызовы API, которые возвращают объект, обычно тот, который предлагает методы API
    • new
    • remote
  • Методы - вызовы API, которые могут быть выполнены только на объекте, возвращенном конструктором
    • addresses
    • domain
    • hostname
    • includesPeerToPeer
    • monitor
    • name
    • port
    • publish
    • resolve
    • stop
    • stopMonitoring
    • txtRecord
    • type

Документация API

Константы

serviceTypes
Подпись hs.bonjour.serviceTypes
Тип Константа
Описание

Список распространенных типов служб, которые могут использоваться для обнаружения с помощью этого модуля.

Примечания
  • Этот список был сгенерирован из вывода avahi-browse -b и avahi-browse -bk из пакета avahi-daemon/stable,now 0.7-4+b1 armhf в Raspbian GNU/Linux 10.
  • Этот список никоим образом не является полным и предоставляется только для примера. Дополнительные типы служб можно довольно легко обнаружить с помощью Google или других поисковых систем.
  • Вы можете просмотреть содержимое этой таблицы в консоли Hammerspoon, введя require("hs.bonjour").serviceTypes в поле ввода.
Источник extensions/bonjour/bonjour.lua строка 248

Конструкторы

new
Подпись hs.bonjour.service.new(name, service, port, [domain]) -> serviceObject
Тип Конструктор
Описание

Возвращает новый serviceObject для рекламы службы, предоставляемой вашим компьютером.

Параметры
  • name - имя рекламируемой службы. Оно не обязательно должно совпадать с именем хоста машины. Однако, если вы укажете пустую строку, будет использовано имя хоста компьютера.
  • service - строка, определяющая рекламируемую службу. Эта строка должна быть указана в формате '_service._protocol.', где _protocol — это '_tcp' или '_udp'. Примеры распространённых типов служб можно найти в hs.bonjour.serviceTypes.
  • port - целое число, определяющее tcp или udp порт, на котором предоставляется служба
  • domain - необязательная строка, определяющая домен, в котором вы хотите рекламировать эту службу.
Возвращает
  • созданный объект службы, или nil, если произошла ошибка
Примечания
  • Если указанное имя не уникально в сети для указанного типа службы, к концу имени будет добавлено число. Это поведение не может быть переопределено и может быть обнаружено только путем проверки hs.bonjour.service:name после вызова hs.bonjour.service:publish для того, чтобы увидеть, было ли имя изменено с того, что вы изначально присвоили.

  • Служба не будет рекламироваться до тех пор, пока не будет вызван hs.bonjour.service:publish для serviceObject, который был возвращён.

  • Если вы не укажете параметр domain, будет использован ваш домен по умолчанию, обычно "local".

Источник extensions/bonjour/bonjour.lua строка 108
remote
Подпись hs.bonjour.service.remote(name, service, [domain]) -> serviceObject
Тип Конструктор
Описание

Возвращает новый serviceObject для удаленной машины (т.е. не компьютера пользователя) в вашей сети, предлагающей указанную службу.

Параметры
  • name - строка, определяющая имя рекламируемой службы в сети для поиска. Часто, но не всегда, это будет имя хоста машины, предоставляющей желаемую службу.
  • service - строка, определяющая тип службы. Эта строка должна быть указана в формате '_service._protocol.', где _protocol — это '_tcp' или '_udp'. Примеры распространённых типов служб можно найти в hs.bonjour.serviceTypes.
  • domain - необязательная строка, определяющая домен, к которому относится служба.
Возвращает
  • созданный объект службы, или nil, если произошла ошибка
Примечания
  • В общем случае вам не нужно использовать этот конструктор, так как они будут создаваться автоматически для вас в обратных вызовах к hs.bonjour:findServices.

  • Однако этот метод может быть использован, когда вы уже знаете, что определенная служба должна существовать в сети, и хотите разрешить её текущие IP-адреса или текстовые записи.

  • Разрешение IP-адреса, имени хоста, порта и текущих текстовых записей службы не произойдёт до тех пор, пока не будет вызван hs.bonjour.service:publish для возвращённого serviceObject.

  • API macOS указывает, что пустая строка домена (т.е. указание параметра domain как "" или его полное отсутствие) должно привести к использованию домена по умолчанию для компьютера; на мой опыт, это приводит к ошибке при попытке разрешить IP-адреса serviceObject, если я не укажу "local" явно. В целом, это не должно быть проблемой, если вы ограничиваете использование remote serviceObjects объектами, возвращаемыми hs.bonjour:findServices, так как домен обнаружения будет включён в объект автоматически. Если вы попытаетесь создать эти объекты самостоятельно, имейте в виду, что попытка использовать "домен по умолчанию" вместо явного указания его, вероятно, не будет работать так, как ожидается.

Источник extensions/bonjour/bonjour.lua строка 138
Rest of the translated HTML END_OF_DOCUMENT_MARKER
includesPeerToPeer
Signature hs.bonjour.service:includesPeerToPeer([value]) -> boolean | serviceObject
Type Method
Description

Получить или установить, следует ли публиковать или разрешать доступ к службе, представленной объектом службы, по протоколам peer-to-peer Bluetooth и Wi-Fi, если они доступны.

Parameters
  • value - необязательный булев параметр, по умолчанию false, указывающий, следует ли проводить рекламу и разрешение доступа по протоколам peer-to-peer Bluetooth и Wi-Fi, если они доступны.
Returns
  • если value предоставлен, возвращает serviceObject; в противном случае возвращает текущее значение.
Notes
  • если вы изменяете значение этого свойства, необходимо вызвать этот метод перед вызовом [hs.bonjour.service:publish](#publish] или hs.bonjour.service:resolve, или после остановки публикации или разрешения с помощью hs.bonjour.service:stop.

  • для удаленных serviceObjects этот флаг определяет, следует ли выполнять разрешение и мониторинг текстовых записей по peer-to-peer сетевым интерфейсам.

  • для локальных (опубликованных) serviceObjects этот флаг определяет, следует ли проводить рекламу по peer-to-peer сетевым интерфейсам.

Source extensions/bonjour/libbonjour_service.m строка 400
monitor
Signature hs.bonjour.service:monitor([callback]) -> serviceObject
Type Method
Description

Мониторить службу на предмет изменений связанных текстовых записей.

Parameters
  • callback - необязательная функция обратного вызова, которая должна принимать 3 аргумента:
    • данные пользователя serviceObject
    • строка "txtRecord"
    • таблица, содержащая пары ключ-значение, определяющие новые текстовые записи для службы
Returns
  • объект serviceObject
Notes
  • При активном мониторинге hs.bonjour.service:txtRecord вернёт самые последние наблюдаемые текстовые записи. Если это единственный метод, которым вы проверяете текстовые записи, но хотите убедиться, что у вас есть самые последние значения, вы должны вызвать этот метод без указания обратного вызова.

  • При вызове hs.bonjour.service:resolve текстовые записи на момент разрешения сохраняются для извлечения с помощью hs.bonjour.service:txtRecord. Последующие изменения в текстовых записях не будут отражены в hs.bonjour.service:txtRecord, если не был вызван этот метод (с функцией обратного вызова или без неё) и он сейчас активен.

  • Вы можете отслеживать изменения текстовых записей для локальных serviceObjects, созданных с помощью hs.bonjour.service.new и публикуемых вами. Это может быть использовано для вызова обратного вызова, когда одна часть вашего кода вносит изменения в текстовые записи, которые вы публикуете, и вам нужно, чтобы другая часть кода знала об этом изменении.

Source extensions/bonjour/libbonjour_service.m строка 552
name
Signature hs.bonjour.service:name() -> string
Type Method
Description

Возвращает имя службы, представленной объектом serviceObject.

Parameters
  • None
Returns
  • строка, содержащая имя службы, представленной объектом serviceObject.
Source extensions/bonjour/libbonjour_service.m строка 269
port
Signature hs.bonjour.service:port() -> integer
Type Method
Description

Возвращает порт, на котором доступна служба, представленная объектом serviceObject.

Parameters
  • None
Returns
  • число, определяющее порт, на котором доступна служба, представленная объектом serviceObject.
Notes
  • для удаленных serviceObjects это будет -1, если этот метод вызван до hs.bonjour.service:resolve.
  • для локальных (опубликованных) serviceObjects этот метод всегда возвращает число, указанное при создании serviceObject с конструктором hs.bonjour.service.new.
Source extensions/bonjour/libbonjour_service.m строка 324
publish
Signature hs.bonjour.service:publish([allowRename], [callback]) -> serviceObject
Type Method
Description

Начать рекламу указанной локальной службы.

Parameters
  • allowRename - необязательный булев параметр, по умолчанию true, указывающий, следует ли автоматически переименовать службу, если сочетание имени и типа уже публикуется в домене службы. Если переименование разрешено и конфликт возникает, имя службы будет дополнено -#, где # - это увеличивающееся целое число, начинающееся с 2.
  • callback - необязательная функция обратного вызова, которая должна принимать 2 или 3 аргумента и не возвращать ничего. Аргументы функции обратного вызова будут одним из следующих наборов:
    • при успешной публикации: * данные пользователя serviceObject * строка "published"
    • если при публикации возникает ошибка: * данные пользователя serviceObject * строка "error" * строка, указывающая на конкретную ошибку
Returns
  • объект serviceObject
Notes
  • Этот метод должен вызываться только для serviceObjects, созданных с помощью hs.bonjour.service.new.
Source extensions/bonjour/libbonjour_service.m строка 430
resolve
Signature hs.bonjour.service:resolve([timeout], [callback]) -> serviceObject
Type Method
Description

Разрешить доступ к адресу и данным обнаруженной службы.

Parameters
  • timeout - необязательное число, по умолчанию 0.0, указывающее максимальное количество секунд для попытки разрешить данные для этой службы. Значение 0.0 означает, что разрешение не должно ограничиться по времени и должно продолжаться неограниченно.
  • callback - необязательная функция обратного вызова, которая должна принимать 2 или 3 аргумента и не возвращать ничего.
    • при успешном разрешении: * данные пользователя serviceObject * строка "resolved"
    • если при разрешении возникает ошибка: * данные пользователя serviceObject * строка "error" * строка, указывающая на конкретную ошибку
    • если timeout указан и имеет любое число отличное от 0.0, следующее будет отправлено в обратный вызов, когда таймаут достигнут: * данные пользователя serviceObject * строка "stop"
Returns
  • объект serviceObject
Notes
  • Этот метод следует вызывать только для serviceObjects, возвращенных объектом браузера hs.bonjour или созданных с помощью hs.bonjour.service.remote.

  • Для удаленной службы этот метод должен быть вызван для получения адресов, порта, имени хоста и любых связанных текстовых записей для службы.

  • Для снижения использования системных ресурсов, как правило, следует указывать значение таймаута или убедиться, что вы вызываете hs.bonjour.service:stop после того, как вы подтвердили, что получили необходимые данные.

Source extensions/bonjour/libbonjour_service.m строка 486
stop
Signature hs.bonjour.service:stop() -> serviceObject
Type Method
Description

Остановить рекламу или разрешение доступа к службе, указанной объектом serviceObject

Parameters
  • None
Returns
  • объект serviceObject
Notes
  • Этот метод остановит рекламу службы, опубликованной с помощью hs.bonjour.service:publish, или разрешение доступа к службе с помощью hs.bonjour.service:resolve.

  • Для снижения использования системных ресурсов, убедитесь, что используете этот метод при разрешении доступа к удаленной службе, если вы не указали таймаут для hs.bonjour.service:resolve или указали таймаут 0.0, после того, как вы подтвердили, что у вас есть необходимые данные.

Source extensions/bonjour/libbonjour_service.m строка 588
stopMonitoring
Signature hs.bonjour.service:stopMonitoring() -> serviceObject
Type Method
Description

Остановить мониторинг службы на предмет изменений в её текстовых записях.

Parameters
  • None
Returns
  • объект serviceObject
Notes
  • Этот метод остановит обновление hs.bonjour.service:txtRecord и вызов обратного вызова, если таковой был назначен с помощью hs.bonjour.service:monitor.
Source extensions/bonjour/libbonjour_service.m строка 612
END_OF_DOCUMENT_MARKER
txtRecord
Подпись hs.bonjour.service:txtRecord([records]) -> table | serviceObject | false
Тип Метод
Описание

Получение или установка текстовых записей, связанных с serviceObject.

Параметры
  • records - необязательная таблица, определяющая текстовую запись для рекламируемой службы в виде набора пар ключ-значение. Все ключи и значения должны быть указаны как строки.
Возвращаемое значение
  • если в метод переданы аргументы, возвращает serviceObject или false, если возникла проблема при установке текстовой записи для этой службы. Если аргументы не переданы, возвращает текущую таблицу текстовых записей.
Примечания
  • для удалённых serviceObject этот метод вернёт nil, если вызван до hs.bonjour.service:resolve

  • установка текстовой записи для службы заменяет существующие записи для serviceObject. Если serviceObject удалённый, это изменение видно только на локальной машине. Для службы, которую вы рекламируете, это изменение будет рекламироваться другим машинам.

  • Текстовые записи обычно используются для предоставления дополнительной информации о службе, а их назначение и значение зависят от службы; например, при рекламе _http._tcp. службы вы можете указать определённый путь на сервере, указав таблицу текстовых записей, содержащих ключ "path".

Источник extensions/bonjour/libbonjour_service.m строка 345
type
Подпись hs.bonjour.service:type() -> string
Тип Метод
Описание

Возвращает тип службы, представленной serviceObject.

Параметры
  • Нет
Возвращаемое значение
  • строка, содержащая тип службы, представленной serviceObject.
Источник extensions/bonjour/libbonjour_service.m строка 307

© 2014–2017 Hammerspoon contributors
Licensed under the MIT License.
https://www.hammerspoon.org/docs/hs.bonjour.service.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API