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.
For connecting MQTTS we need to add three additional params into the connectionSettings
->setUseTls(true)
->setTlsSelfSignedAllowed(true) // Allow self-signed certificates. Discouraged for production use.
->setTlsVerifyPeer(false) // Do not require the self-signed certificate to match the host. Discouraged.
<?php
$server = 'myServer';
$port = '8883';
$clientId = 'testing';
$username = 'XXXX';
$password = 'XXXX';
$clean_session = false;
$connectionSettings = (new ConnectionSettings)
->setUsername($username)
->setPassword($password)
->setKeepAliveInterval(60)
->setLastWillTopic('mytopic')
->setLastWillMessage('client disconnect')
->setUseTls(true)
->setTlsSelfSignedAllowed(true) // Allow self-signed certificates. Discouraged for production use.
->setTlsVerifyPeer(false) // Do not require the self-signed certificate to match the host. Discouraged.
->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();
?>