我单独开了一个进程,异步请求数据后,往mqtt里面publish数据,但是我发现一个问题,在new mqtt client的时候,如果写在onMessage里面,就会出现很多mqtt连接,如果写在onMessage外面,则会只publish一次,导致没有后续数据,我现在只能publish一次后,close掉,然后重新connect 然后重新close。不知道我这种处理方式合理吗?有没有更好的处理方式?
写一个类或者函数把mqtt连接实例存起来,用的时候取出来调用
例如写一个函数放在 app/functions.php 下
function mqtt_connection() { static $connection; if (!$connection) { $connection = new Client('mqtt://...'); } return $connection; }
写一个类用staitc属性存储连接示例也是一样的道理
这么写我也试了 只往里面publish一次数据,后面就不会publish了
可能你哪里写的有问题
就是不知道哪里的问题,我现在一直new 然后close, 虽然效果有,但是感觉这么写不太合理。
已处理 先连接mqtt, 在mqtt onConnect 里面 在连接异步连接
写一个类或者函数把mqtt连接实例存起来,用的时候取出来调用
例如写一个函数放在 app/functions.php 下
写一个类用staitc属性存储连接示例也是一样的道理
这么写我也试了 只往里面publish一次数据,后面就不会publish了
可能你哪里写的有问题
就是不知道哪里的问题,我现在一直new 然后close, 虽然效果有,但是感觉这么写不太合理。
已处理
先连接mqtt, 在mqtt onConnect 里面 在连接异步连接