我正在使用ponte节点应用程序从网络向设备发送MQTT通知,请参阅下面我正在使用的格式。
“http://www.example.com/resources/topic/”并在邮递员测试时作为正文发送消息。我的问题是如何在使用PHP CURL发送MQTT通知时发送qos和retain参数?我的PHP代码如下。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_PORT => self::MQTT_SERVER_PORT,
CURLOPT_URL => self::MQTT_SERVER_URL.'/'.$topic,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "test message"
));
curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if(!$err){
$sent = true;
}
此致 Tismon Varghese。
答案 0 :(得分:0)
如果要发送MQTT消息,则无法使用PHP curl,因为它使用HTTP协议(以及其他一些而非MQTT)发送数据。
MQTT是一种轻量级协议,用于替换HTTP以发送消息。您可以使用以下代码通过PHP发送MQTT消息:
https://github.com/bluerhinos/phpMQTT
这是一个用于向MQTT代理发布数据的示例代码(带有qos和retain参数):
require("phpMQTT.php");
$brokder = "address";
$port = 1883;
$clientName = "Client00";
$topic = "topic";
$message = "Test Message";
$qos = 0;
$retain = 0;
$mqtt = new phpMQTT($broker, $portNo, $clientName);
if ($mqtt->connect()) {
$mqtt->publish($topic, $message, $qos, $retain);
$mqtt->close();
} else {
echo "Error Occured";
}
答案 1 :(得分:-1)
CURL(现在是 7.76.1)不支持比 0 更高的 QoS。