Подписывайтесь и публикуйте в том же клиенте 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]