Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

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()

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

-------------------------------------------------------


### 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, 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