PHPackages                             imiphp/imi-mqtt - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. imiphp/imi-mqtt

ActiveLibrary

imiphp/imi-mqtt
===============

在 imi 框架中开发 MQTT 服务端，并且内置了一个 MQTT 客户端

v2.1.18(2y ago)739411MulanPSL-2.0PHP

Since May 13Pushed 2y ago2 watchersCompare

[ Source](https://github.com/imiphp/imi-mqtt)[ Packagist](https://packagist.org/packages/imiphp/imi-mqtt)[ RSS](/packages/imiphp-imi-mqtt/feed)WikiDiscussions 2.0 Synced today

READMEChangelog (10)Dependencies (3)Versions (39)Used By (1)

imi-mqtt
========

[](#imi-mqtt)

[![Latest Version](https://camo.githubusercontent.com/6294c9610f7e60161cb666eb9a47e5964c1bc866391ba1b5c8031a6b93e62ba1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f696d697068702f696d692d6d7174742e737667)](https://packagist.org/packages/imiphp/imi-mqtt)[![Php Version](https://camo.githubusercontent.com/4a5c2ab20974058a8bab53ecb30ac4c2e6bb961df6229b7386fdc097ab53dfa8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2533453d372e342d627269676874677265656e2e737667)](https://secure.php.net/)[![Swoole Version](https://camo.githubusercontent.com/f4210afc3f396a720a75802010218d847f3ba4f7ae5182c570b1fb2504ec9ec3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73776f6f6c652d2533453d342e372e302d627269676874677265656e2e737667)](https://github.com/swoole/swoole-src)[![IMI License](https://camo.githubusercontent.com/a91d8cb7e734047683f081d721b39b49567d0a8f72630f07400d58cbd949700c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f696d697068702f696d692d6d7174742e737667)](https://github.com/imiphp/imi-mqtt/blob/master/LICENSE)

介绍
--

[](#介绍)

在 imi 框架中开发 MQTT 服务端，并且内置了一个 MQTT 客户端。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的，这些特点使它适用范围非常广泛。在很多情况下，包括受限的环境中，如：机器与机器（M2M）通信和物联网（IoT）。其在，通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

> 本仓库仅用于浏览，不接受 issue 和 Pull Requests，请前往：

Composer
--------

[](#composer)

本项目可以使用composer安装，遵循psr-4自动加载规则，在你的 `composer.json` 中加入下面的内容:

```
{
    "require": {
        "imiphp/imi-mqtt": "~2.0.0"
    }
}
```

然后执行 `composer update` 安装。

使用说明
----

[](#使用说明)

> 可以参考 `example`、`tests` 目录示例。

项目配置文件：

```
[
    'components'    =>  [
        'MQTT'  =>  'Imi\MQTT',
    ],
]
```

### MQTT 通讯数据包类

[](#mqtt-通讯数据包类)

`imi-mqtt` 基于 `binsoul/net-mqtt` 开发，使用的都是这个包中的数据包结构类。

类名一般是`BinSoul\Net\Mqtt\Packet\XXX`

如：`\BinSoul\Net\Mqtt\Packet\SubscribeRequestPacket`

### MQTT 服务开发

[](#mqtt-服务开发)

首先，服务器配置的`type`设为`MQTT`，并且定义好控制器。

控制器需要继承`Imi\Server\MQTT\BaseMQTTController`类，并且实现方法。

如果你是主服务器，配置如下：

```
'mainServer'    =>    [
    'namespace'     =>    'ImiApp\MQTTServer',
    'type'          =>    'MQTTServer',
    'host'          =>    '127.0.0.1',
    'port'          =>    8081,
    'controller'    =>  \ImiApp\MQTTServer\Controller\MQTTController::class,
    // 'configs'       =>    [
    //     // 启用 MQTTS 配置证书
    //     'ssl_cert_file'     =>  dirname(__DIR__) . '/ssl/server.crt',
    //     'ssl_key_file'      =>  dirname(__DIR__) . '/ssl/server.key',
    // ],
],
```

如果你是子服务器，配置如下下：

```
// 子服务器（端口监听）配置
'subServers'        =>    [
    'xxxServer'    =>    [
        'namespace'     =>    'ImiApp\MQTTServer',
        'type'          =>    'MQTTServer',
        'host'          =>    '127.0.0.1',
        'port'          =>    8081,
        'controller'    =>  \ImiApp\MQTTServer\Controller\MQTTController::class,
        // 'configs'       =>    [
        //     // 启用 MQTTS 配置证书
        //     'ssl_cert_file'     =>  dirname(__DIR__) . '/ssl/server.crt',
        //     'ssl_key_file'      =>  dirname(__DIR__) . '/ssl/server.key',
        // ],
    ],
],
```

在控制器方法中返回一个包对象，代表响应当前请求。

同样支持`\Imi\Server\Server::send()`等方法，详见：

### MQTT 客户端开发

[](#mqtt-客户端开发)

**事件监听类：**

```
