关于使用mqtt做异步消息分发问题

萌萌哒

问题描述

我单独开了一个进程,异步请求数据后,往mqtt里面publish数据,但是我发现一个问题,在new mqtt client的时候,如果写在onMessage里面,就会出现很多mqtt连接,如果写在onMessage外面,则会只publish一次,导致没有后续数据,我现在只能publish一次后,close掉,然后重新connect 然后重新close。不知道我这种处理方式合理吗?有没有更好的处理方式?

201 2 0
2个回答

walkor

写一个类或者函数把mqtt连接实例存起来,用的时候取出来调用

例如写一个函数放在 app/functions.php 下

function mqtt_connection()
{
    static $connection;
    if (!$connection) {
        $connection = new Client('mqtt://...');
    }
    return $connection;
}

写一个类用staitc属性存储连接示例也是一样的道理

  • 萌萌哒 2024-02-23

    这么写我也试了 只往里面publish一次数据,后面就不会publish了

  • walkor 2024-02-23

    可能你哪里写的有问题

  • 萌萌哒 2024-02-23

    就是不知道哪里的问题,我现在一直new 然后close, 虽然效果有,但是感觉这么写不太合理。

萌萌哒

已处理
先连接mqtt, 在mqtt onConnect 里面 在连接异步连接

  • 暂无评论
🔝