Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/walkor/mqtt
Asynchronous MQTT client for PHP based on workerman.
https://github.com/walkor/mqtt
mqtt mqtt-client php-mqtt
Last synced: 12 days ago
JSON representation
Asynchronous MQTT client for PHP based on workerman.
- Host: GitHub
- URL: https://github.com/walkor/mqtt
- Owner: walkor
- Created: 2018-06-14T07:58:56.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-21T03:11:32.000Z (2 months ago)
- Last Synced: 2024-10-29T10:30:00.614Z (about 2 months ago)
- Topics: mqtt, mqtt-client, php-mqtt
- Language: PHP
- Homepage:
- Size: 126 KB
- Stars: 207
- Watchers: 14
- Forks: 46
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MQTT
Asynchronous MQTT client for PHP based on workerman.# Installation
```bash
composer require workerman/mqtt
```# 文档
[中文文档](https://www.workerman.net/doc/workerman/components/workerman-mqtt.html)# Example
**subscribe.php**
```php
onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->subscribe('test');
};
$mqtt->onMessage = function($topic, $content){
var_dump($topic, $content);
};
$mqtt->connect();
};
Worker::runAll();
```
Run with command ```php subscribe.php start```**publish.php**
```php
onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->publish('test', 'hello workerman mqtt');
};
$mqtt->connect();
};
Worker::runAll();
```Run with command ```php publish.php start```
## API
*
Client::__construct()
*Client::connect()
*Client::publish()
*Client::subscribe()
*Client::unsubscribe()
*Client::disconnect()
*Client::close()
*callback onConnect
*callback onMessage
*callback onError
*callback onClose
-------------------------------------------------------
### __construct (string $address, [array $options])Create an instance by $address and $options.
* `$address` can be on the following protocols: 'mqtt', 'mqtts', 'mqtt://test.mosquitto.org:1883'.
* `$options` is the client connection options. Defaults:
* `keepalive`: `50` seconds, set to `0` to disable
* `client_id`: client id, default `workerman-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 to broker specified by the given $address and $options in `__construct($address, $options)`.
-------------------------------------------------------
### publish(String $topic, String $content, [array $options], [callable $callback], [array $properties])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.
* `$properties` - `array` MQTT5 user properties
-------------------------------------------------------
### subscribe(mixed $topic, [array $options], [callable $callback], [array $properties])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
* `$properties` - `array` MQTT5 user properties-------------------------------------------------------
### unsubscribe(mixed $topic, [callable $callback], [array $properties])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..
* `$properties` - `array` MQTT5 user properties-------------------------------------------------------
Send DISCONNECT package to broker and close the client.
-------------------------------------------------------
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, array $properties)
`function (topic, message, client, properties) {}`Emitted when the client receives a publish packet
* `$topic` topic of the received packet
* `$content` payload of the received packet
* `$mqtt` Client instance.
* `$properties` `array` MQTT5 user properties-------------------------------------------------------
### callback onError(\Exception $exception)
Emitted when something wrong for example the client cannot connect broker.-------------------------------------------------------
### callback onClose()
Emitted when connection closed.-------------------------------------------------------
# License
MIT