Compare commits
	
		
			18 Commits
		
	
	
		
			v1.0.0
			...
			a243473d24
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a243473d24 | ||
| 
						 | 
					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.
 | 
			
		||||
@@ -139,7 +139,7 @@ This library allows you to use all the features provided by [`php-mqtt/client`](
 | 
			
		||||
Simply retrieve an instance of `\PhpMqtt\Client\Contracts\MqttClient` with `MQTT::connection(string $name = null)` and use it directly.
 | 
			
		||||
 | 
			
		||||
For an extensive collection of examples which explain how to use the MQTT client (directly),
 | 
			
		||||
you can visit the [`php-mqtt/client-examples` repository](https://github.com/php-mqtt/client-examples).
 | 
			
		||||
you can visit the [`php-mqtt/client-examples` repository](https://git.tool.dwoodauto.com/ykxiao/client-examples).
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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