2016-11-14 35 views
0

我正在使用ponte節點應用程序從網絡向設備發送MQTT通知,請參閱下面我使用的格式。發送qos參數以及MQTT通知

http://www.example.com/resources/topic/」和消息作爲正文,同時從郵遞員測試。我的問題是如何發送qos並保留參數,同時使用PHP CURL發送MQTT通知?我的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; 
      } 

Regards, Tismon Varghese。

回答

0

如果要發送MQTT消息,則不可能使用PHP curl,因爲它使用HTTP協議(以及其他一些而不是MQTT)發送數據。

MQTT是一種輕量級的協議,它取代了發送消息的HTTP。您可以使用下面的代碼與PHP發送MQTT消息:

https://github.com/bluerhinos/phpMQTT

下面是發佈數據MQTT經紀人的樣本代碼(有QoS和保留參數):

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"; 

} 
+0

感謝您的回答。但我的代碼完美工作。 Ponte(http://www.eclipse.org/ponte/)是一個支持HTTP和MQTT的應用程序。由於它已經實施;我正在尋找一種可以發送'QoS'參數和消息的方法。 –

+0

我不知道Ponte。挺有趣的。謝謝你告訴我。 – Mehdi