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

AsyncTcpConnection

jackz

看聊天室的代碼的時(shí)候有點(diǎn)疑惑:

// 創(chuàng)建一個(gè) 異步的tcp連接
// 請(qǐng)查看BusinessWorker::tryToConnectGateway方法
$gateway_connection  = new AsyncTcpConnection("GatewayProtocol://$addr");

// 然后發(fā)送一些數(shù)據(jù)

// 請(qǐng)查看BusinessWorker::tryToConnectGateway方法
$gateway_connection->send($gateway_data);
    $gateway_connection->connect();
}

由于AsyncTcpConnection的初始status狀態(tài)都是connecting狀態(tài),所以send的時(shí)候都會(huì)先直接把buffer先存起來(lái),然后直接return ,進(jìn)入到connect方法,connect方法則stream_socket_client連接服務(wù)端,同時(shí)將連接成功后的socket放入全局監(jiān)聽(tīng)中,等待Select::Loop, 。
問(wèn)題就是:
此時(shí)對(duì)于這條連接來(lái)說(shuō),stream_select 什么時(shí)候才能監(jiān)聽(tīng)到?且剛剛send中沒(méi)有寫(xiě)入socket的數(shù)據(jù)是從哪里開(kāi)始寫(xiě)進(jìn)去的呢?
(新手,問(wèn)題若太簡(jiǎn)單,請(qǐng)勿噴。)
下面是 AsyncTcpConnection::$connect的代碼:

    public function connect()
    {
        // Open socket connection asynchronously.
        $this->_socket = stream_socket_client("tcp://{$this->_remoteAddress}", $errno, $errstr, 0,
            STREAM_CLIENT_ASYNC_CONNECT);
        // If failed attempt to emit onError callback.
        if (!$this->_socket) {
            $this->_status = self::STATUS_CLOSED;
            $this->emitError(WORKERMAN_CONNECT_FAIL, $errstr);
            return;
        }
        // Add socket to global event loop waiting connection is successfully established or faild.
        Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'checkConnection'));
    }
3788 2 0
2個(gè)回答

jackz

http://wenda.workerman.net/?/question/30
按帖里面說(shuō)的話(huà),當(dāng)客戶(hù)端連接建立成功之后返回的socket,加入到監(jiān)聽(tīng)之后會(huì)被stream_select監(jiān)聽(tīng)到可寫(xiě),之后就按綁定的handler去處理就能夠?qū)?shù)據(jù)發(fā)送出去了,恩,應(yīng)該是這樣子。

  • 暫無(wú)評(píng)論
walkor 打賞

是的。
當(dāng)發(fā)起異步鏈接后會(huì)立刻返回socket句柄,這時(shí)候系統(tǒng)底層異步去tcp三次握手,workerman把這個(gè)socket句柄加入到stream_select/epoll監(jiān)聽(tīng),當(dāng)socket句柄可寫(xiě)時(shí)去判斷檢查socket是否連上,(socket可寫(xiě)有兩種可能,1、tcp連上了 2、tcp沒(méi)連上),如果連上了就判斷下是否有未發(fā)送的數(shù)據(jù),有的話(huà)就發(fā)送。

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