https://github.com/try-to/swoole_mqtt
一个基于swoole的异步mqtt 客户端库,可用于接收或者发送mqtt协议的消息。支持QoS 0、QoS 1、QoS 2。支持MQTT 3.1和3.1.1版本。 参考workerman-mqtt
https://github.com/try-to/swoole_mqtt
mqtt mqtt-client php swoole
Last synced: 5 months ago
JSON representation
一个基于swoole的异步mqtt 客户端库,可用于接收或者发送mqtt协议的消息。支持QoS 0、QoS 1、QoS 2。支持MQTT 3.1和3.1.1版本。 参考workerman-mqtt
- Host: GitHub
- URL: https://github.com/try-to/swoole_mqtt
- Owner: try-to
- License: mit
- Created: 2018-12-14T04:08:56.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-05-09T06:22:51.000Z (about 6 years ago)
- Last Synced: 2025-10-19T11:23:26.322Z (8 months ago)
- Topics: mqtt, mqtt-client, php, swoole
- Language: PHP
- Homepage:
- Size: 44.9 KB
- Stars: 43
- Watchers: 1
- Forks: 9
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MQTT
Asynchronous MQTT client for PHP based on swoole.
# Installation
composer require try-to/swoole_mqtt
# 文档
[中文文档](https://github.com/try-to/swoole_mqtt/blob/master/README_CN.md)
# Example
**subscribe.php**
```php
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();
```
Run with command ```php subscribe.php```
**publish.php**
```php
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();
```
Run with command ```php publish.php```
## API
* Client::__construct()
* Client::connect()
* Client::reconnect()
* Client::publish()
* Client::subscribe()
* Client::unsubscribe()
* Client::disconnect()
* Client::close()
* callback onConnect
* callback onMessage
* callback onError
* callback onClose
-------------------------------------------------------
### __construct (string $host, int $port, [array $options])
* `$host` Service address.
* `$port` port.
* `$options` is the client connection options. Defaults:
* `keepalive`: `50` seconds, set to `0` to disable
* `client_id`: client id, default `swoole-mqtt-client-{$mt_rand}`
* `protocol_name`: `'MQTT'` or '`MQIsdp`'
* `protocol_level`: `'MQTT'` is `4` and '`MQIsdp`' is `3`
* `clean_session`: `true`, set to false to receive QoS 1 and 2 messages while
offline
* `reconnect_period`: `1` second, interval between two reconnections
* `connect_timeout`: `30` senconds, time to wait before a CONNACK is received
* `username`: the username required by your broker, if any
* `password`: the password required by your broker, if any
* `will`: a message that will sent by the broker automatically when
the client disconnect badly. The format is:
* `topic`: the topic to publish
* `content`: the message to publish
* `qos`: the QoS
* `retain`: the retain flag
* `resubscribe` : if connection is broken and reconnects,
subscribed topics are automatically subscribed again (default `true`)
* `bindto` default '', used to specify the IP address that PHP will use to access the network
* `ssl` default `false`, it can be set `true` or `ssl context` see http://php.net/manual/en/context.ssl.php
* `debug` default `false`, set `true` to show debug info
-------------------------------------------------------
### connect()
Connect service `__construct($host, $port, $options)`.
-------------------------------------------------------
### reconnect()
Reconnect service `__construct($host, $port, $options)`.
-------------------------------------------------------
### publish(String $topic, String $content, [array $options], [callable $callback])
Publish a message to a topic
* `$topic` is the topic to publish to, `String`
* `$message` is the message to publish, `String`
* `$options` is the options to publish with, including:
* `qos` QoS level, `Number`, default `0`
* `retain` retain flag, `Boolean`, default `false`
* `dup` mark as duplicate flag, `Boolean`, default `false`
* `$callback` - `function (\Exception $exception)`, fired when the QoS handling completes,
or at the next tick if QoS 0. No error occurs then `$exception` will be null.
-------------------------------------------------------
### subscribe(mixed $topic, [array $options], [callable $callback])
Subscribe to a topic or topics
* `$topic` is a `String` topic or an `Array` which has as keys the topic name and as value
the QoS like `array('test1'=> 0, 'test2'=> 1)` to subscribe.
* `$options` is the options to subscribe with, including:
* `qos` qos subscription level, default 0
* `$callback` - `function (\Exception $exception, array $granted)`
callback fired on suback where:
* `exception` a subscription error or an error that occurs when client is disconnecting
* `granted` is an array of `array('topic' => 'qos', 'topic' => 'qos')` where:
* `topic` is a subscribed to topic
* `qos` is the granted qos level on it
-------------------------------------------------------
### unsubscribe(mixed $topic, [callable $callback])
Unsubscribe from a topic or topics
* `$topic` is a `String` topic or an array of topics to unsubscribe from
* `$callback` - `function (\Exception $e)`, fired on unsuback. No error occurs then `$exception` will be null..
-------------------------------------------------------
### disconnect()
Send DISCONNECT package to broker and close the client.
-------------------------------------------------------
### close()
Close the client without DISCONNECT package.
-------------------------------------------------------
### callback onConnect(Client $mqtt)
Emitted on successful connection (`CONNACK` package received).
-------------------------------------------------------
### callback onMessage(String $topic, String $content, Client $mqtt)
`function (topic, message, packet) {}`
Emitted when the client receives a publish packet
* `$topic` topic of the received packet
* `$content` payload of the received packet
* `$mqtt` Client instance.
-------------------------------------------------------
### callback onError(\Exception $exception)
Emitted when something wrong for example the client cannot connect broker.
-------------------------------------------------------
### callback onClose()
Emitted when connection closed.
-------------------------------------------------------
### material
https://github.com/walkor/mqtt