Lanzamiento de la versión PHPMQTT v1.1.4, análisis de protocolo MQTT y cliente de rutina

En la versión v1.1.4, la lógica de reconexión se ha optimizado y reconnect_delayse han agregado parámetros de configuración, lo que permite a los usuarios establecer el tiempo de retardo de reconexión.

La versión anterior es fija 3s, ahora el valor predeterminado es 3s, puede configurarlo usted mismo

use Simps\MQTT\Client;
use Swoole\Coroutine;

Coroutine\run(function () {
    $config = [
        'host' => '127.0.0.1',
        'port' => 1883,
        'user_name' => '',
        'password' => '',
        'client_id' => \Simps\MQTT\Client::genClientID(),
        'keep_alive' => 10,
        'reconnect_delay' => 5,
    ];
    $swooleConfig = [
        'open_mqtt_protocol' => true,
        'package_max_length' => 2 * 1024 * 1024,
        'connect_timeout' => 1.0,
    ];
    $client = new Client($config, $swooleConfig);
});

Optimicé la lógica de conectar y publicar, y agregué algunas restricciones:

  1. En el protocolo MQTT, no se admite QoS mayor que 3. El código de error correspondiente se devolverá 0x9Ben MQTT5 para indicar que no se admite QoS, pero no hay una respuesta correspondiente en MQTT3. Verá que en realidad se está reconectando todo el tiempo mediante la captura de paquetes.
include __DIR__ . '/examples/bootstrap.php';

use Simps\MQTT\Client;
use Swoole\Coroutine;

Coroutine\run(function () {
    $client = new Client(getTestConnectConfig(false), SWOOLE_MQTT_CONFIG);
    $will = [
        'topic' => 'simps-mqtt/user001/update',
        'qos' => 3,
        'message' => 'byebye',
    ];
    $res = $client->connect(false, $will);
    var_dump($res);
});

Por lo tanto, está directamente restringido a MQTT3 estableciendo un nivel mayor que QoS2

PHP Fatal error: Uncaught Simps\MQTT\Exception\ProtocolException: QoS 3 not supported
  1. De manera similar, en MQTT5, publicar puede topic_aliasusarse para publicar, en este momento topicpuede estar vacío, pero no hay topic_aliasfunción en MQTT3 , por lo que no admite la publicación de topicmensajes vacíos.
include __DIR__ . '/examples/bootstrap.php';

use Simps\MQTT\Client;
use Swoole\Coroutine;

Coroutine\run(function () {
    $client = new Client(getTestConnectConfig(false), SWOOLE_MQTT_CONFIG);
    $client->connect();
    var_dump($client->publish('', 'hello'));
});
PHP Fatal error: Uncaught Simps\MQTT\Exception\ProtocolException: Protocol Error, Topic cannot be empty

gracias

Ayer envié PHPMQTT a la biblioteca de software de OSCHINA ( https://www.oschina.net/p/phpmqtt ), y hoy descubrí que la página de inicio de OSCHINA realmente lo recomendaba, gracias

Actualizar registro

Mejorar

  • Optimice la lógica de reconexión, aumente el parámetro reconnect_delay (# 26)
  • Se agregó ProtocolException, restringir la publicación no puede ser un tema vacío (# 27)
  • Actualizar el archivo de prueba testPublishNonTopic (# 28)
  • Optimice el paquete de conexión MQTT3 (e669288)

reparar

  • Corregir el índice indefinido causado por el error del parámetro de entrada (9d908b7)

Sobre PHPMQTT

  • Cliente de análisis y rutina de protocolos MQTT
  • Cliente de análisis y rutina de protocolo MQTT para PHP
  • Admite la versión 3.1, 3.1.1 y 5.0 del protocolo MQTT, admite QoS 0, QoS 1, QoS 2
  • La primera biblioteca PHP que admite el protocolo MQTT v5.0

文档 :https://mqtt.simps.io
GitHub :https://github.com/simps/mqtt
Gitee :https://gitee.com/phpiot/mqtt

Soporte recuerde pedir una estrella ~

Supongo que te gusta

Origin www.oschina.net/news/126559/phpmqtt-1-1-4-released
Recomendado
Clasificación