国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

mqtt使用protocol_level => 5 時(shí)消息回調(diào)有問題

a97663286

問題描述

workerman\mqtt在使用 'protocol_level' => 5 時(shí)連接,然后消息的回調(diào)第一次主題的參數(shù)是正確的,接收第二次以后得消息回調(diào),主題就為空了

$mqtt->onMessage = function ($topic, $content, $packet) {
    echo $topic . ":" . $content . PHP_EOL;
};

第一次可以正常顯示,第二次以后$topic 就為空了

程序代碼或配置

<?php

require __DIR__ . '/vendor/autoload.php';

use Workerman\Timer;
use Workerman\Worker;

$worker = new Worker('websocket://0.0.0.0:8282');
$worker->name   = 'mqtt';
// 這里進(jìn)程數(shù)必須設(shè)置為1
$worker->count = 1;

$worker->onWorkerStart = function (Worker $worker) {
    //初始化mqtt進(jìn)行連接
    $mqtt = new Workerman\Mqtt\Client('mqtt://127.0.0.1:1883', array(
        'debug'          => false,
        "client_id"      => "workerman_server",
        "keepalive"      => 60,
        "username"       => "workerman_server", "password" => "Ufo@8888",
        "clean_session"  => false,
        'properties'     => [
            'session_expiry_interval' => 60,
            'receive_maximum'         => 65535,
            'topic_alias_maximum'     => 65535,
        ],
        'protocol_level' => 5, //使用協(xié)議5時(shí)接收到訂閱消息回調(diào)函數(shù)中topic會(huì)有空值的問題,所以不能使用5的協(xié)議版本

    ));
    $mqtt->onConnect = function (Workerman\Mqtt\Client $mqtt)  {

        //連接成功后啟動(dòng)一個(gè)心跳主題進(jìn)行定時(shí)發(fā)布
        Timer::add(5, function () use ($mqtt) {
            $mqtt->publish('heart',
                '{"cmd":"heart",  "time":"' . date('Y-m-d H:i:s') . '"}',
                [
                    'qos'    => 0,
                    'retain' => 0,
                    'dup'    => 0,
                ]
            );
        });
        //默認(rèn)連接成功訂閱 heart主題
        $mqtt->subscribe('heart');

    };
    $mqtt->onMessage = function ($topic, $content, $packet) {
        echo $topic . ":" . $content . PHP_EOL;
    };

    // 連接mqtt
    $mqtt->connect();
};

Worker::runAll();

重現(xiàn)問題的步驟

消息回調(diào),第一次可以顯示回調(diào)的主題,以后進(jìn)不能顯示了
截圖

操作系統(tǒng)環(huán)境及workerman/webman等具體版本

Ubuntu22.04
workerman v4.1.16
workerman\mqtt v1.6

583 1 1
1個(gè)回答

walkor 打賞

把你的腳本拷貝了一遍,沒改任何東西,測(cè)試正常。
截圖

mqtt服務(wù)端用的mosquitto

  • a97663286 2024-08-19

    難道是我系統(tǒng)的php版本的問題嗎?我的php版本是7.4。我再測(cè)試下吧。

  • a97663286 2024-08-19

    更換php版本后一樣的問題,我暫時(shí)找不到哪里的問題了。

  • walkor 2024-08-19

    和php版本沒關(guān)系,可能是mqtt客戶端不是最新,或者mqtt服務(wù)端有問題。
    我測(cè)試的環(huán)境版本如下
    workerman/mqtt 1.6
    mqtt服務(wù)端 mosquitto 2.0.18

  • a97663286 2024-08-19

    好的,我的mqtt的服務(wù)器是emqx v1.0.1 可能和mqtt服務(wù)器有關(guān)系。

??