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

用workerman的mqtt做為客戶端,如何onClose或者onError的時(shí)候連另一臺(tái)服務(wù)器

youwuku

用workerman的mqtt做為客戶端,mqtt服務(wù)端是集群,連接任何一臺(tái)都可以接收數(shù)據(jù),我的問(wèn)題是,如何onClose或者onError的時(shí)候沖連另一臺(tái)服務(wù)器。
即做到只要一臺(tái)出問(wèn)題,自動(dòng)重連服務(wù)器隊(duì)列里的任何一臺(tái)。

2636 3 0
3個(gè)回答

six

onClose 或者 onError 的時(shí)候,關(guān)閉當(dāng)前mqtt連接,然后重新建立一個(gè)mqtt實(shí)例,去連新的ip。

  • youwuku 2020-07-06

    謝謝!

  • youwuku 2020-07-07

    評(píng)論里貼代碼不方便,后面貼了,我們嘗試了一下,目前來(lái)看還行,需要到生產(chǎn)環(huán)境里測(cè)試了。

youwuku

新的ip需要 new 新的Client,要不然地址傳不進(jìn)來(lái),而這時(shí)候就報(bào) 類重復(fù)加載錯(cuò)誤。因?yàn)槌qv內(nèi)存的問(wèn)題。

  • six 2020-07-06

    搞不懂你為啥要重復(fù)加載

  • youwuku 2020-07-06
    $mqtt = new Client($adress, $connArr);
    $mqtt->count=5;
    
    $mqtt->onClose = function($mqtt)
    {
        $mqtt->close();
        $adress='xxx';
        $connArr=array(
            'username' => 'xxxx',
            'password' => 'xxxx',
            'debug' => true
        ); 
        $mqttBack = new Client($adress, $connArr);
    };
  • youwuku 2020-07-06

    是這樣寫嗎?

youwuku

下面這段代碼能實(shí)現(xiàn)上面的功能,測(cè)試過(guò)了,就不知道還有什么坑。

$worker->onWorkerStart = function(){
global $mqtt,$mqttBack;

$mqtt->count=5;

$mqtt->onConnect = function($mqtt) {
    $mqtt->subscribe('logs/Test');
};

$mqtt->onMessage = function($topic, $content){
    echo "topic:$topic content:$content\n";
};

$mqtt->onClose = function($mqtt)
{
    global $mqttBack;

    $mqttBack->connect();
};
$mqtt->connect();

//備用地址部分。

$mqttBack->count=5;
$mqttBack->onConnect = function($mqttBack) {
    $mqttBack->subscribe('logs/Test');
};

$mqttBack->onMessage = function($topic, $content){
    echo "topic:$topic content:$content\n";
};

$mqttBack->onClose = function($mqttBack)
{
    global $mqtt;

    $mqtt->connect();
};

};

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??