首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php MQTT订阅不工作

php MQTT订阅不工作
EN

Stack Overflow用户
提问于 2016-08-25 06:30:26
回答 1查看 4.7K关注 0票数 5

我已经从https://mosquitto.org/download/在我的windows机器上安装了MQTT。

我正在使用https://github.com/bluerhinos/phpMQTT/tree/master/examples发布和订阅。按预期发布作品,但订阅不起作用。

我不明白为什么这不是工作。MQTT代理需要连接远程MQTT服务器吗?我想在php中实现发布和订阅方法。

发布:

代码语言:javascript
复制
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;
    }
}

订阅:

代码语言:javascript
复制
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函数中得到真

代码:

代码语言:javascript
复制
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);    
            } 

我已经测试了我的发布页面使用铬扩展的方式,订阅使用铬扩展,它的工作良好,意味着在读取套接字错误的东西。

EN

回答 1

Stack Overflow用户

发布于 2016-12-10 20:03:48

更新phpMQTT.php文件:

代码语言:javascript
复制
private $socket=8080;           /* holds the socket */
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39138169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档