一个基于 swoole 的异步 mqtt 客户端库,可用于接收或者发送 mqtt 协议的消息

一个基于 swoole 的异步 mqtt 客户端库,可用于接收或者发送 mqtt 协议的消息。支持 QoS 0、QoS 1、QoS 2。支持 MQTT 3.1 和 3.1.1 版本.

安装

composer require try-to/swoole_mqtt

Example

subscribe.php

<?php

use TrytoMqtt\Client;

require_once __DIR__ . '/vendor/autoload.php';

$options = [
    'clean_session' => false,
    'client_id' => 'demo-subscribe-123456',
    'username' => '',
    'password' => '',
];

$mqtt = new Client('127.0.0.1', 1883, $options);

$mqtt->onConnect = function ($mqtt) {
    $mqtt->subscribe('/World');
};

$mqtt->onMessage = function ($topic, $content) {
    var_dump($topic, $content);
};

$mqtt->onError = function ($exception) use ($mqtt) {
    echo "error\n";
    // $mqtt->reconnect(1000);
};

$mqtt->onClose = function () {
    echo "close\n";
};

$mqtt->connect();

命令行运行 php subscribe.php 启动

publish.php

<?php

use TrytoMqtt\Client;

require_once __DIR__ . '/../vendor/autoload.php';

$options = [
    'clean_session' => false,
    'client_id' => 'demo-publish-123456',
    'username' => '',
    'password' => '',
];

$mqtt = new Client('127.0.0.1', 1883, $options);

$mqtt->onConnect = function ($mqtt) {
    $mqtt->publish('/World', 'hello swoole mqtt');
};

$mqtt->onError = function ($exception) {
    echo "error\n";
};

$mqtt->onClose = function () {
    echo "close\n";
};

$mqtt->connect();

命令行运行 php publish.php 启动

实现的接口

  • Client::__construct()
  • Client::connect()
  • Client::reconnect()
  • Client::publish()
  • Client::subscribe()
  • Client::unsubscribe()
  • Client::disconnect()
  • Client::close()
  • callback onConnect
  • callback onMessage
  • callback onError
  • callback onClose

地址

github地址
码云地址

本作品采用《CC 协议》,转载必须注明作者和本文链接
tryTo
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

还没接触过swool 是做聊天室的吗,听说棋牌游戏用这个用的多

6年前 评论
tryTo

@HI 是的,做游戏和物联网的比较多

6年前 评论

这个disconnect 方法 和close 是否需要自己来写

5年前 评论

Swoole\Client::__construct(): please install the ext-async extension, using Swoole\Async\Client 在方法里面调用报这个错 是什么原因呢

4年前 评论
playmaker

报错 :未定义错误码 丢包:不能完全接收数据包 unpack 函数报错

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!