我试着连接MQTTS和我的HTTPS服务器,但是它不工作,它在MQTTX上工作正常,但是在PHP上它不连接

ryhaxcpt  于 2022-12-17  发布在  PHP
关注(0)|答案(2)|浏览(207)

我试着连接MQTTS和我的HTTPS服务器,但它不工作。它在MQTTX上工作正常,但与PHP它不连接。

<?php 

$server   = 'myServer';
$port     = '8883';
$clientId = 'testing';
$username = 'XXXX';
$password = 'XXXX';
$clean_session = false;

$connectionSettings  = new ConnectionSettings();
$connectionSettings->setUsername($username)
    ->setPassword($password)
    ->setKeepAliveInterval(60)
    ->setLastWillTopic('mytopic')
    ->setLastWillMessage('client disconnect')
    ->setLastWillQualityOfService(1);

$mqtt = new MqttClient($server, $port, $clientId);
$mqtt->connect($connectionSettings, $clean_session);

$mqtt->subscribe('mytopic/respond', function ($topic, $message) use ($mqtt) {
    echo $message;
}, 2);

$mqtt->close();
$mqtt->interrupt();
?>

如何连接MQTTS和PHP。

tf7tbtn2

tf7tbtn21#

查看phpMQTT库的源代码,您需要在构造函数中传递cafile以启用SSL/TLS连接。

$mqtt = new MqttClient($server, $port, $clientId, $cafile);

其中cafile是用于验证代理的CA证书的路径。

pgx2nnw8

pgx2nnw82#

好的,第一个答案是针对错误的phpMQTT库,请重试。
正确的库如下所示:https://github.com/php-mqtt/client
来自文档:
//此标志确定是否应将TLS用于连接。用于
//连接到代理必须支持TLS连接。

->setUseTls(false)

例如:

$connectionSettings->setUsername($username)
    ->setPassword($password)
    ->setKeepAliveInterval(60)
    ->setLastWillTopic('mytopic')
    ->setLastWillMessage('client disconnect')
    ->setUseTls(true)
    ->setLastWillQualityOfService(1);

相关问题