1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/immusen-yii2-swoole-mqtt

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MQTT для Yii2 на основе Swoole 4

MQTT-сервер для Yii2, основанный на Swoole 4, разрешает тему как маршрут, ведущий к контроллеру/действию/параметру, и поддерживает Redis pub/sub для запуска асинхронной задачи из вашего веб-приложения.

Установка

  1. Установите Yii2: Yii2.

  2. Установите Swoole: Swoole, рекомендуется версия 4+.

  3. Другие зависимости: расширение PHP-Redis.

Предпочтительный способ установки этого расширения — через composer.

Либо запустите:

php composer.phar require --prefer-dist immusen/yii2-swoole-mqtt "~1.0"

либо добавьте:

"immusen/yii2-swoole-mqtt": "~1.0"

в раздел require файла composer.json.

Тестирование или использование

После установки перейдите в корневой каталог проекта, например, cd yii2-advanced-project/

Переименуйте файлы:

  • mv vendor/immusen/yii2-swoole-mqtt/example/mqtt ./
  • mv vendor/immusen/yii2-swoole-mqtt/example/mqtt-server ./

Дайте права на выполнение файлу ./mqtt-server:

chmod a+x ./mqtt-server

Запустите:

./mqtt-server

Конфигурация:

Просмотрите файл ./mqtt/config/params.php:

return [
    'listen' => 8721,
    'daemonize' => 0,
    'auth' => 1, // config auth class in ./main.php
];

или напишите код в файле ./mqtt/controllers/

Тестовый клиент: MQTTLens, MQTT.fx

Пример:

Случай A: Подписка/Публикация

  1. Клиент MQTT подписывается на тему: room/count/100011

2.1. Клиент MQTT публикует: каждый раз, когда публикуется тема: room/join/100011, сторона подписки получает count+1, или публикуется тема: room/leave/100011 и получает count -1.

2.2. Клиент Redis публикует: каждый раз $redis->publish('async', 'room/join/100011'), сторона подписки получает count+1, или $redis->publish('async', 'room/leave/100011') получает count -1.

Случай B: Публикация (уведомление или отчёт)

Клиент MQTT публикует тему: report/coord/100111 с полезной нагрузкой: например, 110.12345678,30.12345678,0,85

Кодирование:

Подписка на тему MQTT: channel/count/100001 обрабатывается в:

class ChannelController{
    public function actionCount($channel_id){
        echo "client {$this->fd} subscribed the count change of channel {$channel_id}";
    }
}

//клиент 1 подписался на изменение количества каналов 100001

Публикация темы MQTT: channel/join/100001 с полезной нагрузкой: «Foo» обрабатывается в:

class ChannelController{
    public function actionJoin($channel_id, $who){
        echo "{$who} join in channel {$channel_id}";
        #затем транслировать обновление всем клиентам, которые подписались на канал 100001
        #$this->publish($fds, $sub_topic, $count);
    }
}

// Foo присоединяется к каналу 100001

MQTT

О MQTT: MQTT Version 3.1.1 Plus Errata 01

Неполная реализация MQTT 3.1.1 в этом проекте, обновление...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Yii2 MQTT Server, IOT сервер, основанный на Swoole 4. Особенности: использование Topic в качестве маршрута с маршрутизацией к controller/action/param; поддержка передачи асинхронных задач из Web-проекта через механизм pub/sub Redis; многопоточность, асинхронность, сопрограммы; простота и лёгкость расширения. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/immusen-yii2-swoole-mqtt.git
git@api.gitlife.ru:oschina-mirror/immusen-yii2-swoole-mqtt.git
oschina-mirror
immusen-yii2-swoole-mqtt
immusen-yii2-swoole-mqtt
master