add configuration and usage to readme
This commit is contained in:
parent
aff8b8d1a1
commit
2ea0c4cd2c
95
README.md
95
README.md
|
@ -12,15 +12,106 @@ allows you to connect to an MQTT broker where you can publish messages and subsc
|
|||
composer require php-mqtt/laravel-client
|
||||
```
|
||||
|
||||
You should then publish the configuration file using
|
||||
The package will register itself through Laravel auto discovery of packages.
|
||||
Registered will be the service provider as well as an `MQTT` facade.
|
||||
|
||||
After installing the package, you should publish the configuration file using
|
||||
|
||||
```bash
|
||||
php artisan vendor:publish --provider="PhpMqtt\Client\MqttClientServiceProvider"
|
||||
```
|
||||
|
||||
and change the configuration in `config/mqtt-client.php` according to your needs.
|
||||
|
||||
## Configuration
|
||||
|
||||
The package allows you to configure multiple named connections. An initial example
|
||||
can be found in the published configuration file. Except for the `host` parameter,
|
||||
all configuration options are entirely optional and come with the defaults provided
|
||||
to the `env()` helper in the example configuration file (no default means `null`).
|
||||
|
||||
An example configuration of two connections, where one is meant for sharing public
|
||||
data and one for private data, could look like the following:
|
||||
```php
|
||||
'default_connection' => 'private',
|
||||
|
||||
'connections' => [
|
||||
'private' => [
|
||||
'host' => 'mqtt.example.com',
|
||||
'port' => 1883,
|
||||
],
|
||||
'public' => [
|
||||
'host' => 'test.mosquitto.org',
|
||||
'port' => 1883,
|
||||
],
|
||||
],
|
||||
```
|
||||
In this example, the private connection is the default one.
|
||||
|
||||
## Usage
|
||||
|
||||
// TODO: usage
|
||||
### Publish (QoS level 0)
|
||||
|
||||
Publishing a message with QoS level 0 is quite easy and can be done in a single command:
|
||||
```php
|
||||
use PhpMqtt\Client\Facades\MQTT;
|
||||
|
||||
MQTT::publish('some/topic', 'Hello World!');
|
||||
```
|
||||
|
||||
If needed, the connection name can be passed as third parameter:
|
||||
```php
|
||||
use PhpMqtt\Client\Facades\MQTT;
|
||||
|
||||
MQTT::publish('some/topic', 'Hello World!', 'public');
|
||||
```
|
||||
|
||||
Using `MQTT::publish($topic, $message)` will implicitly call `MQTT::connection()`,
|
||||
but the connection will not be closed after usage. If you want to close the connection
|
||||
manually because your script does not need the connection any more, you can call
|
||||
`MQTT:close()` (optionally with the connection name as a parameter).
|
||||
Please also note that using `MQTT::publish($topic, $message)` will always use QoS level 0.
|
||||
If you need a different QoS level, then please follow the instructions below.
|
||||
|
||||
### Publish (QoS level 1 & 2)
|
||||
|
||||
Different to QoS level 0, we need to run an event loop in order for QoS 1 and 2 to work.
|
||||
This is because with a one-off command we cannot guarantee that a message reaches it's target.
|
||||
The event loop will ensure a published message gets sent again if no acknowledgment is returned
|
||||
by the broker within a grace period (in case of QoS level 1). Also handled by the event loop will
|
||||
be the release of packages in case of QoS level 2.
|
||||
|
||||
```php
|
||||
use PhpMqtt\Client\Facades\MQTT;
|
||||
|
||||
$mqtt = MQTT::connection();
|
||||
$mqtt->publish('some/topic', 'foo', 1);
|
||||
$mqtt->publish('some/other/topic', 'bar', 2);
|
||||
$mqtt->loop(true);
|
||||
```
|
||||
|
||||
In order to escape the loop, you can call `$mqtt->interrupt()` which will exit the loop during
|
||||
the next iteration. The method can for example be called in a registered signal handler:
|
||||
```php
|
||||
pcntl_signal(SIGINT, function (int $signal, $info) use ($mqtt) {
|
||||
$mqtt->interrupt();
|
||||
});
|
||||
```
|
||||
|
||||
### Subscribe
|
||||
|
||||
Very similar to publishing with QoS level 1 and 2, subscribing requires to run an event loop.
|
||||
But before running the loop, topics need to be subscribed to:
|
||||
|
||||
```php
|
||||
use PhpMqtt\Client\Facades\MQTT;
|
||||
|
||||
$mqtt = MQTT::connection();
|
||||
$mqtt->subscribe('some/topic', function (string $topic, string $message) {
|
||||
echo sprintf('Received QoS level 1 message on topic [%s]: %s', $topic, $message);
|
||||
}, 1);
|
||||
$mqtt->loop(true);
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
|
|
Loading…
Reference in New Issue