Compare commits
17 Commits
Author | SHA1 | Date | |
---|---|---|---|
d5ded08f5e | |||
dfa86d9dc8 | |||
0100c86442 | |||
bbaff88e41 | |||
42227c7e56 | |||
30040e8503 | |||
68c11c6b4a | |||
b059586d08 | |||
0669643386 | |||
936ce0549d | |||
c42ec1d6ff | |||
d2a2a839e4 | |||
fe0cb883e7 | |||
136ce2cb75 | |||
c398d5ec07 | |||
d237909b6d | |||
7dfaac06e4 |
23
.github/dependabot.yml
vendored
Normal file
23
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "composer"
|
||||
directory: "/"
|
||||
allow:
|
||||
- dependency-type: "development"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
time: "05:00"
|
||||
timezone: "Europe/Vienna"
|
||||
labels:
|
||||
- "composer dependencies"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
time: "05:00"
|
||||
timezone: "Europe/Vienna"
|
||||
labels:
|
||||
- "github actions"
|
15
.github/workflows/tests.yml
vendored
15
.github/workflows/tests.yml
vendored
@ -4,7 +4,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
jobs:
|
||||
@ -15,10 +15,13 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-version: ['7.4', '8.0']
|
||||
php-version: ['7.4', '8.0', '8.1', '8.2']
|
||||
include:
|
||||
- php-version: '8.2'
|
||||
run-sonarqube-analysis: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@ -38,10 +41,10 @@ jobs:
|
||||
- name: Get Composer Cache Directory
|
||||
id: composer-cache
|
||||
run: |
|
||||
echo "::set-output name=dir::$(composer config cache-files-dir)"
|
||||
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache Composer dependencies
|
||||
uses: actions/cache@v2
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ${{ steps.composer-cache.outputs.dir }}
|
||||
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
|
||||
@ -55,7 +58,7 @@ jobs:
|
||||
|
||||
- name: Run SonarQube analysis
|
||||
uses: sonarsource/sonarcloud-github-action@master
|
||||
if: matrix.php-version == '8.0'
|
||||
if: matrix.run-sonarqube-analysis
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# php-mqtt/laravel-client
|
||||
# ykxiao/laravel-mqtt-client
|
||||
|
||||
[](https://packagist.org/packages/php-mqtt/laravel-client)
|
||||
[](https://packagist.org/packages/php-mqtt/laravel-client)
|
||||
@ -16,10 +16,10 @@ allows you to connect to an MQTT broker where you can publish messages and subsc
|
||||
|
||||
## Installation
|
||||
|
||||
The package is available on [packagist.org](https://packagist.org/packages/php-mqtt/laravel-client) and can be installed using composer:
|
||||
The package is available on [packagist.org](https://packagist.org/packages/ykxiao/laravel-mqtt-client) and can be installed using composer:
|
||||
|
||||
```bash
|
||||
composer require php-mqtt/laravel-client
|
||||
composer require ykxiao/laravel-mqtt-client
|
||||
```
|
||||
|
||||
The package will register itself through Laravel auto discovery of packages.
|
||||
|
@ -1,52 +1,52 @@
|
||||
{
|
||||
"name": "php-mqtt/laravel-client",
|
||||
"description": "A wrapper for the php-mqtt/client library for Laravel.",
|
||||
"type": "library",
|
||||
"keywords": [
|
||||
"mqtt",
|
||||
"client",
|
||||
"publish",
|
||||
"subscribe",
|
||||
"laravel"
|
||||
],
|
||||
"homepage": "https://github.com/php-mqtt/laravel-client",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Marvin Mall",
|
||||
"email": "marvin-mall@msn.com",
|
||||
"role": "developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"illuminate/config": "~7.0|~8.0",
|
||||
"illuminate/support": "~7.0|~8.0",
|
||||
"php-mqtt/client": "^1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpMqtt\\Client\\": "src"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"PhpMqtt\\Client\\MqttClientServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"MQTT": "PhpMqtt\\Client\\Facades\\MQTT"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"fix:cs": "vendor/bin/phpcbf",
|
||||
"test": [
|
||||
"@test:cs"
|
||||
"name": "ykxiao/laravel-mqtt-client",
|
||||
"description": "A wrapper for the ykxiao/laravel-mqtt-client library for Laravel.",
|
||||
"type": "library",
|
||||
"keywords": [
|
||||
"mqtt",
|
||||
"client",
|
||||
"publish",
|
||||
"subscribe",
|
||||
"laravel"
|
||||
],
|
||||
"test:cs": "vendor/bin/phpcs"
|
||||
}
|
||||
"homepage": "https://git.tool.dwoodauto.com/ykxiao/laravel-matt-client",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Marvin Mall",
|
||||
"email": "marvin-mall@msn.com",
|
||||
"role": "developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"illuminate/config": "^7.0|^8.0|^9.0|^10.0",
|
||||
"illuminate/support": "^7.0|^8.0|^9.0|^10.0",
|
||||
"php-mqtt/client": "^1.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"PhpMqtt\\Client\\": "src"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"PhpMqtt\\Client\\MqttClientServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"MQTT": "PhpMqtt\\Client\\Facades\\MQTT"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"fix:cs": "vendor/bin/phpcbf",
|
||||
"test": [
|
||||
"@test:cs"
|
||||
],
|
||||
"test:cs": "vendor/bin/phpcs"
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,10 @@ return [
|
||||
// with the log level as configured.
|
||||
'enable_logging' => env('MQTT_ENABLE_LOGGING', true),
|
||||
|
||||
// Which logging channel to use for logs produced by the MQTT client.
|
||||
// If left empty, the default log channel or stack is being used.
|
||||
'log_channel' => env('MQTT_LOG_CHANNEL', null),
|
||||
|
||||
// Defines which repository implementation shall be used. Currently,
|
||||
// only a MemoryRepository is supported.
|
||||
'repository' => MemoryRepository::class,
|
||||
@ -101,6 +105,14 @@ return [
|
||||
// The interval (in seconds) in which the client will send a ping to the broker,
|
||||
// if no other message has been sent.
|
||||
'keep_alive_interval' => env('MQTT_KEEP_ALIVE_INTERVAL', 10),
|
||||
|
||||
// Additional settings for the optional auto-reconnect. The delay between reconnect attempts is in seconds.
|
||||
'auto_reconnect' => [
|
||||
'enabled' => env('MQTT_AUTO_RECONNECT_ENABLED', false),
|
||||
'max_reconnect_attempts' => env('MQTT_AUTO_RECONNECT_MAX_RECONNECT_ATTEMPTS', 3),
|
||||
'delay_between_reconnect_attempts' => env('MQTT_AUTO_RECONNECT_DELAY_BETWEEN_RECONNECT_ATTEMPTS', 0),
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
],
|
||||
|
@ -60,6 +60,12 @@ class ConnectionManager
|
||||
$name = $this->defaultConnection;
|
||||
}
|
||||
|
||||
// Remove the connection if it is in a disconnected state.
|
||||
// Doing this instead of simply reconnecting ensures the caller will get a fresh connection.
|
||||
if (array_key_exists($name, $this->connections) && !$this->connections[$name]->isConnected()) {
|
||||
unset($this->connections[$name]);
|
||||
}
|
||||
|
||||
if (!array_key_exists($name, $this->connections)) {
|
||||
$this->connections[$name] = $this->createConnection($name);
|
||||
}
|
||||
@ -133,11 +139,16 @@ class ConnectionManager
|
||||
$cleanSession = (bool) Arr::get($config, 'use_clean_session', true);
|
||||
$repository = Arr::get($config, 'repository', Repository::class);
|
||||
$loggingEnabled = (bool) Arr::get($config, 'enable_logging', true);
|
||||
$logChannel = Arr::get($config, 'log_channel', null);
|
||||
|
||||
$settings = $this->buildConnectionSettings(Arr::get($config, 'connection_settings', []));
|
||||
$repository = $this->application->make($repository);
|
||||
$logger = $loggingEnabled ? $this->application->make('log') : null;
|
||||
|
||||
if ($logger && $logChannel) {
|
||||
$logger = $logger->channel($logChannel);
|
||||
}
|
||||
|
||||
$client = new MqttClient($host, $port, $clientId, $protocol, $repository, $logger);
|
||||
$client->connect($settings, $cleanSession);
|
||||
|
||||
@ -171,6 +182,9 @@ class ConnectionManager
|
||||
->setLastWillTopic(Arr::get($config, 'last_will.topic'))
|
||||
->setLastWillMessage(Arr::get($config, 'last_will.message'))
|
||||
->setLastWillQualityOfService((int) Arr::get($config, 'last_will.quality_of_service', MqttClient::QOS_AT_MOST_ONCE))
|
||||
->setRetainLastWill((bool) Arr::get($config, 'last_will.retain', false));
|
||||
->setRetainLastWill((bool) Arr::get($config, 'last_will.retain', false))
|
||||
->setReconnectAutomatically((bool) Arr::get($config, 'auto_reconnect.enabled', false))
|
||||
->setMaxReconnectAttempts((int) Arr::get($config, 'auto_reconnect.max_reconnect_attempts', 3))
|
||||
->setDelayBetweenReconnectAttempts((int) Arr::get($config, 'auto_reconnect.delay_between_reconnect_attempts', 0));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user