Home > Blockchain >  I tried to connect MQTTS with my HTTPS server but it didn't work. It works fine on MQTTX but wi
I tried to connect MQTTS with my HTTPS server but it didn't work. It works fine on MQTTX but wi

Time:12-16

I tried to connect MQTTS with my HTTPS server but it didn't work. It works fine on MQTTX but with PHP it doesn't connect.

<?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();
?>

How to connect MQTTS with PHP.

CodePudding user response:

Looking at the source code for the phpMQTT library you need to pass a cafile in the constructor to enable a SSL/TLS connection.

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

Where the cafile is the path to a CA certificate to validate the broker.

CodePudding user response:

OK, first answer was against the wrong phpMQTT library, trying again.

The correct library is here: https://github.com/php-mqtt/client

From the doc:

// This flag determines if TLS should be used for the connection. The port which is used to

// connect to the broker must support TLS connections.

->setUseTls(false)

e.g.

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