Подписаться и публиковать в том же клиенте Mqtt

Я подписываюсь на все темы и хочу выполнять одни и те же операции (например, получать идентификатор из названия темы) и повторно публиковать ту же полезную нагрузку, но с разными темами. Это мой код, я успешно могу сделать это, создав еще одно соединение. Я хочу использовать то же соединение для публикации моего сообщения.

<?php

$client = new Mosquitto\Client(); 
$client->onConnect('connect');
$client->onDisconnect('disconnect');
$client->onSubscribe('subscribe');
$client->onMessage('message');
$client->connect(localhost, 8080, 60);
$client->subscribe('#', 1); // Subscribe to all messages

while(true){
$client->loopForever();
sleep(5);
}

function connect($r) {
echo "Received response code {$r}\n";
 }

 function subscribe() {
 echo "Subscribed to a topic\n";
 }

 function message($message) {
printf("Got a message on topic %s with payload:\n%s\n", $message- 
 >topic, $message->payload);

 $dbusername="root";
 $dbpassword="";
  $server="localhost";
 $dbconnect=mysql_connect($server,$dbusername,$dbpassword);

  $topic=explode("/",$message->­topic);
   $savetopicname=$topic[0];  // home
  $savesensor=$topic[1];  //temperature

  $sqlfetch="SELECT id FROM datas.rooms WHERE room='".$savetopicname."'";
 $sql_run=mysql_query($sqlfetch,$dbconnect);
 $out=mysql_fetch_array($sql_run);
  $sendid=$out[0]; //id =5

  $newpayload=$message->payload;
 $newtopic=$message->topic."/".$sendid." ";

 $client_new=new Mosquitto\Client();
 $client_new=onConnect('connect');
$client_new=connect("localhost",8080,60);
 $client_new->publish($newtopic,$newpayload,1,false);

}

 function disconnect() {
echo "Disconnected cleanly\n";
 }

0 ответов

Другие вопросы по тегам