workerman是否能实现Mqtt的客户端

xiewen_kevin

@walkor,

业务逻辑是这样的: 设备A通过mqtt协议 向 Mosquitto服务器上的某个Topic发布消息,php的mqtt客户端通过轮询订阅这个Topic来实时获取设备A上报的数据,然后存入数据库。

php端的mqtt client 这边我已经有实现的类,此类提供订阅和发布接口..

目前我这边实现部分代码:

$topics = array("qos"=>0, "function"=>"getmsg"); //getmsg  回调方法, 取得数据
    $mqtt->subscribe($topics,0); //订阅主题
    while($mqtt->proc()){  //proc()  心跳等及其他实现
}

只是单纯的通过while(){} 去主题上订阅消息 性能及稳定性是不是会很差?

mqtt已有成熟的Mosquitto作为服务器,请问下,workerman可以用来实现mqtt的客户端吗?
如果可以的话 我把怎么把代码移植到workerman框架里.麻烦walkor说下具体的思路,感激不尽~

6696 1 1
1个回答

walkor

单个脚本while(){}循环稳定性要差一些,需要有个主进程监控这个脚本是否异常退出。

workerman可以作为mqtt的客户端,实际上就是开发一个mqtt协议类。

自定义协议可以参考下手册 定制通讯协议一章 http://doc.workerman.net/protocols/why-protocols.html

作为客户端使用效果类似

use Workerman\Connection\AsyncTcpConnection;
$worker = new Worker();
$worker->onWorkerStart = function()
{
    $client_connection = new AsyncTcpConnection('mqtt://ip:port');
    $client_connection->onMessage = function($client_connection, $message)
    {
        var_dump($message);
    };
    $client_connection->onConnect/onError/onClose...
        $client_connection->connect();
    };
  • 暂无评论
年代过于久远,无法发表回答
🔝