try-to / swoole_mqtt
swoole mqtt 客户端
v0.0.5
2018-12-14 06:41 UTC
Requires
- php: >=7.0.0
- ext-swoole: >=2.1
This package is auto-updated.
Last update: 2024-09-09 15:41:45 UTC
README
基于 swoole 的 PHP 异步 MQTT 客户端。
安装
composer require try-to/swoole_mqtt
文档
示例
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
运行
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
' 是3
clean_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 context
,请参阅 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
是发布选项,包括qos
QoS 级别,Number
,默认0
retain
保留标志,Boolean
,默认false
dup
标记为重复标志,Boolean
,默认false
$callback
-function (\Exception $exception)
,当 QoS 处理完成时触发,或在 QoS 0 的情况下在下一个 tick 时触发。如果没有错误发生,则$exception
将为 null。
subscribe(mixed $topic, [array $options], [callable $callback])
订阅主题或主题
$topic
是一个String
主题或一个具有键为主题名称和值为 QoS 的Array
(如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
是该主题的授予服务质量等级
unsubscribe(mixed $topic, [callable $callback])
从主题或主题列表中取消订阅
$topic
是要取消订阅的字符串主题或主题数组$callback
-function (\Exception $e)
,在取消确认(unsuback)事件中触发。如果没有错误发生,则$exception
将为 null。
disconnect()
向代理发送 DISCONNECT 数据包并关闭客户端。
close()
不发送 DISCONNECT 数据包就关闭客户端。
回调函数 onConnect(Client $mqtt)
在成功连接(接收到 CONNACK
数据包)时发出。
回调函数 onMessage(String $topic, String $content, Client $mqtt)
function (topic, message, packet) {}
当客户端接收到发布(publish)数据包时发出。
$topic
接收到的数据包的主题$content
接收到的数据包的有效载荷$mqtt
客户端实例。
回调函数 onError(\Exception $exception)
当发生错误时发出,例如客户端无法连接到代理。
回调函数 onClose()
在连接关闭时发出。