关于mqtt示例中发布publish的问题

devler

@walkor,
订阅主题需要实时监听可以启动后常驻内存守护进程运行这个没问题;发布publish我想根据后台业务需要发送主题,如何实现?

1439 2 1
2个回答

如果你的后台是用workerman的系列框架写的,那么你可以直接使用

 $mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
    $mqtt->onConnect = function($mqtt) {
       $mqtt->publish('test', 'hello workerman mqtt');
    };
    $mqtt->connect();

如果是其他或者fpm框架写的,可以使用第三方类库
例如:https://packagist.org/packages/php-mqtt/client

具体使用方法看文档即可

  • devler 2022-09-02

    谢谢你的回答,我用其他框架中直接使用上面客户端直接连接是报错误的,好像是必须依托Woker进程启动后在连接成功;意思是我再使用php-mqtt库进行发布消息吗

  • ngrok.cc内网穿透 2022-09-02

    是的,其他客户端不能用workerman,因为workerman是cli模式使用的,你其他框架是fpm的话使用不了

  • devler 2022-09-02

    明白了,理论是能否通过一些操作,将fpm框架的产生的数据,推送Woker容器里,然后使用容器里的mqtt进行publish

  • ngrok.cc内网穿透 2022-09-02

    你可以借助redis来实现,workerman通过自定义进行去获取redis里面的内容,但是这样不如你直接fpm去mqtt推送了

  • devler 2022-09-02

    好的,非常感谢

稚出

那得看你用的服务器端是什么了,如果是emqx,有单独的api的

  • devler 2022-09-02

    服务端是Emqx,emqx可以过api,进行publish发布消息吗?

  • 稚出 2022-09-02

    自己查一下文档,有的

  • devler 2022-09-02

    好的,非常感谢

年代过于久远,无法发表回答
🔝