En la versión v1.1.4, la lógica de reconexión se ha optimizado y reconnect_delay
se 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:
- En el protocolo MQTT, no se admite QoS mayor que 3. El código de error correspondiente se devolverá
0x9B
en 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
- De manera similar, en MQTT5, publicar puede
topic_alias
usarse para publicar, en este momentotopic
puede estar vacío, pero no haytopic_alias
función en MQTT3 , por lo que no admite la publicación detopic
mensajes 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 ~