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

基于AsyncTcpConnection實現(xiàn)的WS客戶端reConnect 方法問題。

kinross

使用AsyncTcpConnection實現(xiàn)的WS客戶端reConnect()在onClose回調(diào)中調(diào)用,實現(xiàn)斷線重連. 重新連接之后打印的發(fā)送數(shù)據(jù)會根據(jù)重啟的次數(shù)增加, 例如第一次就一次發(fā)送一條 第二次就一次發(fā)送2次,第三次就一次發(fā)送3條以此類推,

 public function onWorkerStart()
    {
        //ws 形式連接
        $con = new AsyncTcpConnection('ws://192.168.55.31:2000/ws');
//        $con->websocketPingInterval = 50;
        //當連接建立成功時,發(fā)送http請求數(shù)據(jù)
        $con->onConnect = function(AsyncTcpConnection $con) {
            //定時發(fā)送消息
            Timer::add(5, function () use ($con) {
                $con->send("連接成功goWebsocket\n");
            });
        };

        //返回的消息
        $con->onMessage = function(AsyncTcpConnection $con, $data) {
            echo $data;
        };

        // 當連接遠程websocket服務器的連接斷開時
        $con->onClose = function(AsyncTcpConnection $con){
            echo "連接關閉\n";
            $con->reConnect(5);
        };

        $con->onError = function(AsyncTcpConnection $con, $err_code, $err_msg) {
            echo "$err_code, $err_msg \n";
        };

        $con->connect();

    }

這個onClose關閉之后調(diào)用重啟為什么會這樣了?

1265 2 0
2個回答

walkor 打賞

重連后會再次調(diào)用onConnect方法,所以你onConnect方法里定時器被重復添加了。

  • 暫無評論
walkor 打賞
$con->onConnect = function(AsyncTcpConnection $con) {
    if (empty($con->timer)) {
        //定時發(fā)送消息
        $con->timer = Timer::add(5, function () use ($con) {
            $con->send("連接成功goWebsocket\n");
        });
    }
};

改成這樣

  • kinross 2022-05-23

    謝謝walkor的解答。 這樣沒有問題了。 我建議在workerman的AsyncTcpConnection類的reConnect 方法文檔也改一下, 應該會有人也碰到這樣問題。 謝謝!

  • walkor 2022-05-23

    已經(jīng)增加提示

  • kinross 2022-05-23

    棒 這速度真是可以 謝謝walkor的無私奉獻。

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