我已经从https://mosquitto.org/download/在我的windows机器上安装了MQTT。
我正在使用https://github.com/bluerhinos/phpMQTT/tree/master/examples发布和订阅。按预期发布作品,但订阅不起作用。
我不明白为什么这不是工作。MQTT代理需要连接远程MQTT服务器吗?我想在php中实现发布和订阅方法。
发布:
require("../phpMQTT.php");
$mqtt = new phpMQTT("host", 1883, "124464646464/32"); //Change client name to something unique
if ($mqtt->connect()) {
echo "Connect Sucssfully";
try
{
$mqtt->publish("124464646464/Test","Hello HK123! at ".date("r"),0);
echo "<br>publish done";
$mqtt->close();
}
catch(Exception $e)
{
echo $e;
}
}订阅:
ini_set('output_buffering','on');
require("../phpMQTT.php");
$mqtt = new phpMQTT("host", 1883, "124464646464/27"); //Change client name to something unique
if(!$mqtt->connect()){
exit(1);
}
$topics['124464646464/Test'] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);
while($mqtt->proc()){
}
$mqtt->close();
function procmsg($topic,$msg){
echo "Msg Recieved: ".date("r")."\nTopic:{$topic}\n$msg\n";
}错误:错误订阅标头
获取错误表主机错误日志
编辑:
我已经使用命令行运行了订阅脚本,它总是打印“”,意思是永远从feof函数中得到真
代码:
if(feof($this->socket)){
if($this->debug) echo "eof receive going to reconnect for good measure\n";
fclose($this->socket);
$this->connect_auto(false);
if(count($this->topics))
$this->subscribe($this->topics);
} 我已经测试了我的发布页面使用铬扩展的方式,订阅使用铬扩展,它的工作良好,意味着在读取套接字错误的东西。
发布于 2016-12-10 20:03:48
更新phpMQTT.php文件:
private $socket=8080; /* holds the socket */https://stackoverflow.com/questions/39138169
复制相似问题