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

無限重連問題

2007lf
$worker = new Worker();

$worker->onWorkerStart = function ($worker) {

    //a客戶端
    $con = new AsyncTcpConnection('ws:/aaa.com');
    $con->onConnect = function ($con) {
        echo '=連接=';
        $con->lastMessageTime = time();

        //心跳
        $time_interval = 5;
        $con->timer_id = Timer::add($time_interval, function () use ($con) {
            $stamp = time();
            //斷線重連
            if (($stamp - $con->lastMessageTime) > 7) {
                echo '=斷線重連=';
                Timer::del($con->timer_id);
                $con->close();
            } else {
                $con->send('{"ping": '. $stamp .'}');
            }
        });
    };

    $con->onMessage = function ($con, $data) {
        $data = json_decode($data, true);
        if (isset($data)) {
            $con->lastMessageTime = $data;
            return;
        }
    };

    $con->onClose = function ($con) {
        echo '=關(guān)閉=';
        if (isset($con->timer_id)) {
            Timer::del($con->timer_id);
        }
        $con->reConnect(2);
    };

    $con->connect();

    //b客戶端
    $cons = new AsyncTcpConnection('ws:/bbb.com');
    $cons->onConnect = function ($cons) {
        echo '=連接s=';
        $cons->lastMessageTime = time();

        //心跳
        $time_interval = 5;
        $cons->timer_id = Timer::add($time_interval, function () use ($cons) {
            $stamp = time();
            //斷線重連
            if (($stamp - $cons->lastMessageTime) > 7) {
                echo '=斷線重連s=';
                Timer::del($cons->timer_id);
                $cons->close();
            } else {
                $cons->send('{"ping": '. $stamp .'}');
            }
        });
    };

    $cons->onMessage = function ($cons, $data) {
        $data = json_decode($data, true);
        if (isset($data)) {
            $cons->lastMessageTime = $data;
            return;
        }
    };

    $cons->onClose = function ($cons) {
        echo '=關(guān)閉s=';
        if (isset($cons->timer_id)) {
            Timer::del($cons->timer_id);
        }
        $cons->reConnect(2);
    };

    $cons->connect();
};

Worker::runAll();

運(yùn)行一段時(shí)候,會出現(xiàn)下圖中的無限斷線重連問題,客戶端a和b都有出現(xiàn)過這個(gè)問題,實(shí)在想不通,求助
?

3258 4 0
4個(gè)回答

phpcreeper

1、if ($stamp - $cons->lastMessageTime) > 7,? 定時(shí)器第二次執(zhí)行的時(shí)候肯定滿足這個(gè)條件了;
2、另外根據(jù)場景:$con->lastMessageTime = time(); 應(yīng)該改為:
empty($con->lastMessageTime) && $con->lastMessageTime = time();

  • 2007lf 2019-06-01

    只有兩次ping都沒有pong返回才會觸發(fā)重連,重新連接就是要初始化lastMessageTime啊,不然會一直觸發(fā)重連

walkor 打賞

更新到最新版本3.5.19試下,3.5.19版本優(yōu)化了下重連問題

  • 2007lf 2019-06-01

    是這個(gè)最新版本,你也看不出問題在哪嗎?[捂臉哭]

  • walkor 2019-06-02

    3.5.19之前的版本 asnycTcpConnection使用ws協(xié)議時(shí),重連握手通訊時(shí)數(shù)據(jù)可能會被業(yè)務(wù)send的數(shù)據(jù)擾亂導(dǎo)致重連失敗,3.5.19解決了這個(gè)問題,你可以試下

  • 2007lf 2019-06-02

    @1:我用的就是這個(gè)版本,不過我對比了最新的,只有一點(diǎn)差距,是這個(gè)因素嗎,下圖

2007lf

[attach]2075[/attach]
Workerman-3.5.19/Worker.php

2007lf

最近又出現(xiàn)無限重連的情況,中間有段時(shí)候穩(wěn)定了很久,非常奇怪,=連接s= 中,沒有斷的情況,又來了=連接s=,然后就無限重連,=連接= 都正常,就我上面這種多個(gè)客戶端放到一個(gè)進(jìn)程中是否合理?@walkor 請教幫助,謝謝!

年代過于久遠(yuǎn),無法發(fā)表回答
??