Перейти к содержимому
docs.
WORKSPACE

Документации проектов

Открыть каталог проектов
Localzet ServerАсинхронный PHP-серверTriangleФреймворк и компонентыMIX IDИдентификация и интеграцииHack APIПубличные API хакатонаACNПроект и компонентыUserlay / UserNetПроект и компонентыAxiomПроект и компонентыМесседжинг через почтуПроект и компонентыLWT / JWT / JOSEПроект и компонентыФинансовая аналитика KimaiПроект и компонентыМультипарадигмальная БДПроект и компонентыZorin PlatformПроект и компонентыZorin TrustПроект и компонентыFloraScope / VegwatchПроект и компонентыaegis-qДокументация проектаaevumdbДокументация проектаauditДокументация проектаauto-invest-managerАвтотрейдерcaine-companionДокументация проектаcertbot-cloudflareДокументация проектаClusterLocalzet Server / ClustercmdveilДокументация проектаConsolePHP CLICronБиблиотеки Localzet Serverdata-connectorДокументация проектаdevice-controlDevice Controlenn-projectДокументация проектаEventsБиблиотеки Localzet ServerflowsintДокументация проектаforgeДокументация проектаHttpClientБиблиотеки Localzet ServerinterpreterСобственный языкinvariaДокументация проектаkeynotesДокументация проектаknotrouteKnotroutelaravel-personal-analyticsДокументация проектаlocalzet-osДокументация проектаmeridianДокументация проектаMQTTБиблиотеки Localzet Server✓nano-kernelСобственная ОСNoterДокументация проектаpersonal-analyticsДокументация проектаProxyБиблиотеки Localzet ServerPSRБиблиотеки Localzet ServerPSR-7Библиотеки Localzet Serverrschs-monitorДокументация проектаsemsealДокументация проектаshardsealДокументация проектаSocketIOБиблиотеки Localzet ServerSOCKS5Библиотеки Localzet Serverstandalone-analyticsДокументация проектаstatic-php-cliДокументация проектаStorageБиблиотеки Localzet ServersutureДокументация проектаtempoweaveДокументация проектаttsСинтез речиTunnelБиблиотеки Localzet Serverui-kitUI KitvesperДокументация проектаWebAnalyzerWebAnalyzerzorin-access-brokerДокументация проектаzorin-authority-brokerДокументация проектаzorin-authority-sdk-phpДокументация проектаzorin-authority-sdk-pythonДокументация проектаzorin-authority-sdk-tsДокументация проектаzorin-client-intelДокументация проектаzorin-device-core-aospДокументация проектаzorin-host-agentДокументация проектаzorin-native-labДокументация проектаzorin-nodeДокументация проектаzorin-opsДокументация проектаdonstu-python-sdkДокументация проектаfloortraceFloortraceserver-rsLocalzet Server / Cluster
Каталог

Репозиторий содержит MQTT-клиент, кодирование пакетов версий протокола 3/4/5 и вспомогательные классы MQTT 5 properties. MQTT используется для обмена сообщениями с broker: издатель отправляет payload в topic, подписчик получает сообщения по topic filters.

Пакет не является MQTT-broker и не хранит прикладные сообщения за пределами состояния соединения.

В composer.json указаны пакет localzet/mqtt, зависимость Server ^4.1 и PSR-4-префикс localzet\MQTT\. Однако src/Client.php объявляет Workerman\Mqtt\Client и обращается к Workerman\Connection, Workerman\Timer и Workerman\Mqtt\....

Это несогласованность реализации с автозагрузкой и зависимостями. Обычный new localzet\MQTT\Client(...) не получает класс из этого файла. Не подставляйте такой пример в приложение, пока namespaces/transport адаптации не приведены к одному контракту. Добавление Composer-пакета само по себе не исправляет проблему.

Ниже описан фактический API класса, находящегося в исходнике. Он нужен для понимания интеграции и адаптации; ручное подключение одного Client.php не обеспечивает все требуемые классы и protocol aliases.

  1. Конструктор получает адрес broker и options, выбирает MQTT/MQTT5 codec, создаёт AsyncTcpConnection.
  2. connect() регистрирует callbacks transport и начинает подключение.
  3. После TCP connect отправляется MQTT CONNECT; прикладной onConnect вызывается после успешного CONNACK.
  4. Подписки и публикации отправляют пакеты с message IDs, когда они нужны протоколу.
  5. После разрыва transport reconnect зависит от настройки reconnect_period и явного запрета переподключения.

Не публикуйте прикладное сообщение сразу по одному факту создания объекта: дождитесь подтверждённого MQTT-подключения.

subscribe($topic, $options = [], $callback = null, $properties = []) принимает строку topic filter либо карту topics. Для обычного режима карта связывает topic с QoS; для MQTT 5 используются дополнительные параметры subscription.

Ответ подписки передаётся callback как ошибка либо карта granted-кодов. Отдельное сообщение приходит в onMessage($topic, $content, $client), а не в subscription callback. Payload остаётся данными приложения: JSON-декодирование не выполняется автоматически.

Класс сохраняет темы для resubscribe, если включена соответствующая настройка. Это локальный реестр процесса, а не persistent subscription database клиента.

publish($topic, $content, $options = [], $callback = null, $properties = []) отправляет payload с параметрами qos, retain и dup. При QoS 0 сообщение не получает message ID и callback не превращается в подтверждение доставки брокером.

Для QoS с подтверждением callback связан с протокольным message ID. Подтверждение broker не означает, что подписчик завершил бизнес-операцию. Exactly-once эффект записи в вашу БД отдельно не обеспечивается MQTT-клиентом.

Retain — свойство хранения broker, не локального массива outgoing. Не кладите туда бессрочные секреты только ради удобства повторного получения.

clean_session по умолчанию включён. resubscribe тоже включён, а reconnect_period равен одной секунде. Восстановление тем при reconnect зависит от сочетания clean_session/resubscribe и сохранённой карты тем.

disconnect() отправляет MQTT DISCONNECT и закрывает соединение; close() закрывает transport без отправки такого пакета. Для остановки используйте явный lifecycle, а не бесконечное ожидание reconnect после намеренного завершения.

Внутренний outgoing и message IDs находятся в памяти. Не считайте перезапуск PHP-процесса сохранением незавершённых delivery exchanges.

Адрес mqtts://... включает SSL transport; ssl-array передаётся как socket context. Политику сертификатов нужно задавать и проверять в фактически используемом transport, не отключая проверку peer ради успешного подключения.

При debug = true CONNECT-log включает username и password, а публикации — topic и content. На реальных broker credentials этот режим недопустим без исправления редактирования чувствительных данных.

Параметры, callbacks и протокольные компоненты

Исходный код · AGPL-3.0