gutink / swoole_co_mqtt
swoole协程MQTT客户端。基于try-to/swoole_mqtt开发
0.1.3
2020-07-23 08:40 UTC
Requires
- php: >=7.0.0
- ext-swoole: >=4.4
This package is auto-updated.
Last update: 2024-09-23 17:33:37 UTC
README
基于swoole的PHP协程MQTT客户端。
安装
composer require gutink/swoole_co_mqtt
文档
示例
subscribe.php
<?php use GuMqtt\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(); $mqtt->loopForever();
使用命令php subscribe.php运行
publish.php
<?php use GuMqtt\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(); $mqtt->loopForever();
使用命令php publish.php运行
API
- Client::__construct()
- Client::connect()
- Client::reconnect()
- Client::publish()
- Client::subscribe()
- Client::unsubscribe()
- Client::disconnect()
- Client::close()
- 连接回调onConnect
- 消息回调onMessage
- 错误回调onError
- 关闭回调onClose
__construct (string $host, int $port, [array $options])
-
$host服务地址。 -
$port端口。 -
$options是客户端连接选项。默认keepalive:50秒,设置为0以禁用client_id: 客户端ID,默认swoole-mqtt-client-{$mt_rand}protocol_name:'MQTT'或'MQIsdp'protocol_level:'MQTT'是4,而'MQIsdp'是3clean_session:true,设置为false以在离线时接收QoS 1和2的消息reconnect_period:1秒,两次重连之间的间隔connect_timeout:30秒,在收到CONNACK之前等待的时间username: 代理服务器所需的用户名,如果有password: 代理服务器所需的密码,如果有will: 当客户端断开连接时,代理服务器会自动发送的消息。格式为topic: 要发布的主题content: 要发布的消息qos: QoSretain: 保留标志
resubscribe: 如果连接中断并重新连接,则自动重新订阅已订阅的主题(默认true)bindto默认'',用于指定PHP将用于访问网络的IP地址ssl默认false,可以设置为true或ssl上下文,请参阅https://php.ac.cn/manual/en/context.ssl.phpdebug默认false,设置为true以显示调试信息
connect()
连接服务__construct($host, $port, $options)。
reconnect()
重新连接服务__construct($host, $port, $options)。
publish(String $topic, String $content, [array $options], [callable $callback])
向主题发布消息
$topic是要发布的主题,String$message是要发布的消息,String$options是要发布时的选项,包括qosQoS级别,Number,默认0retain保留标志,Boolean,默认falsedup标记为重复标志,Boolean,默认false
$callback-function (\Exception $exception),在QoS处理完成时触发,或者在QoS 0的情况下在下一个tick时触发。如果没有错误发生,则$exception将为null。
subscribe(mixed $topic, [array $options], [callable $callback])
订阅主题或主题
$topic是一个主题字符串或一个键为数组,键为主题名称,值为 QoS 级别,例如array('test1'=> 0, 'test2'=> 1)用于订阅。$options是订阅时使用的选项,包括qos订阅 QoS 级别,默认 0
$callback-function (\Exception $exception, array $granted)在 suback 上触发的回调,其中exception是订阅错误或在客户端断开连接时发生的错误granted是一个数组,例如array('topic' => 'qos', 'topic' => 'qos'),其中topic是订阅的主题qos是分配给该主题的 QoS 级别
unsubscribe(mixed $topic, [callable $callback])
取消订阅主题或主题
$topic是一个字符串主题或要取消订阅的主题数组$callback-function (\Exception $e),在 unsuback 上触发。如果没有错误发生,则$exception将为 null。
disconnect()
向代理发送 DISCONNECT 包并关闭客户端。
close()
关闭客户端而不发送 DISCONNECT 包。
callback onConnect(Client $mqtt)
在成功连接时触发(收到 CONNACK 包)。
callback onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
当客户端收到发布包时触发
$topic接收到的包的主题$content接收到的包的有效负载$mqtt客户端实例。
callback onError(\Exception $exception)
在出现错误时触发,例如客户端无法连接代理。
callback onClose()
在连接关闭时触发。
材料
https://github.com/walkor/mqtt https://github.com/try-to/swoole_mqtt