<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # \_\_construct 方法 ```php void AsyncTcpConnection::__construct(string $remote_address, $context_option = null) ``` 創建一個異步連接對象。 AsyncTcpConnection可以讓Workerman作為客戶端向遠程服務端發起異步連接,并通過send接口和onMessage回調異步發送和處理連接上的數據。 ## 參數 參數:`remote_address` 連接的地址,例如 `tcp://www.baidu.com:80` `ssl://www.baidu.com:443` `ws://echo.websocket.org:80` `frame://192.168.1.1:8080` `text://192.168.1.1:8080` 參數:`$context_option` ```此參數要求(workerman >= 3.3.5)``` 用來設置socket上下文,例如利用```bindto```設置以哪個(網卡)ip和端口訪問外部網絡,設置ssl證書等。 參考 [stream\_context\_create](http://php.net/manual/en/function.stream-context-create.php)、 [套接字上下文選項](http://php.net/manual/zh/context.socket.php)、[SSL 上下文選項](http://php.net/manual/zh/context.ssl.php) ## 注意 目前AsyncTcpConnection支持的協議有[tcp](http://baike.baidu.com/subview/32754/8048820.htm)、[ssl](http://baike.baidu.com/view/525499.htm)、[ws](315306)、[frame](315308)、[text](315307)。 同時支持自定義協議,參見[如何自定義協議](315125) 其中[ssl](http://baike.baidu.com/view/525499.htm)要求Workerman>=3.3.4,并安裝[openssl擴展](http://php.net/manual/zh/book.openssl.php)。 目前不支持[http](http://baike.baidu.com/view/9472.htm)協議的AsyncTcpConnection。 可以用```new AsyncTcpConnection('ws://...')```像瀏覽器一樣在workerman里發起websocket連接遠程websocket服務器,見[示例](315306)。但是不能以 ```new AsyncTcpConnection('websocket://...')```的形式在workerman里發起websocket連接。 ## 示例 ### 示例 1、異步訪問外部http服務 ```php use \Workerman\Worker; use \Workerman\Connection\AsyncTcpConnection; require_once __DIR__ . '/Workerman/Autoloader.php'; $task = new Worker(); // 進程啟動時異步建立一個到www.baidu.com連接對象,并發送數據獲取數據 $task->onWorkerStart = function($task) { // 不支持直接指定http,但是可以用tcp模擬http協議發送數據 $connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:80'); // 當連接建立成功時,發送http請求數據 $connection_to_baidu->onConnect = function($connection_to_baidu) { echo "connect success\n"; $connection_to_baidu->send("GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: keep-alive\r\n\r\n"); }; $connection_to_baidu->onMessage = function($connection_to_baidu, $http_buffer) { echo $http_buffer; }; $connection_to_baidu->onClose = function($connection_to_baidu) { echo "connection closed\n"; }; $connection_to_baidu->onError = function($connection_to_baidu, $code, $msg) { echo "Error code:$code msg:$msg\n"; }; $connection_to_baidu->connect(); }; // 運行worker Worker::runAll(); ``` ### 示例 2、異步訪問外部websocket服務,并設置以哪個本地ip及端口訪問 ```php <?php use Workerman\Worker; use Workerman\Connection\AsyncTcpConnection; require_once __DIR__ . '/Workerman/Autoloader.php'; $worker = new Worker(); $worker->onWorkerStart = function($worker){ // 設置訪問對方主機的本地ip及端口(每個socket連接都會占用一個本地端口) $context_option = array( 'socket' => array( // ip必須是本機網卡ip,并且能訪問對方主機,否則無效 'bindto' => '114.215.84.87:2333', ), ); $con = new AsyncTcpConnection('ws://echo.websocket.org:80', $context_option); $con->onConnect = function($con) { $con->send('hello'); }; $con->onMessage = function($con, $data) { echo $data; }; $con->connect(); }; Worker::runAll(); ``` ### 示例 3、異步訪問外部wss端口,并設置本地ssl證書 ```php <?php use Workerman\Worker; use Workerman\Connection\AsyncTcpConnection; require_once __DIR__ . '/../Workerman/Autoloader.php'; $worker = new Worker(); $worker->onWorkerStart = function($worker){ // 設置訪問對方主機的本地ip及端口以及ssl證書 $context_option = array( 'socket' => array( // ip必須是本機網卡ip,并且能訪問對方主機,否則無效 'bindto' => '114.215.84.87:2333', ), // ssl選項,參考http://php.net/manual/zh/context.ssl.php 'ssl' => array( // 本地證書路徑。 必須是 PEM 格式,并且包含本地的證書及私鑰。 'local_cert' => '/your/path/to/pemfile', // local_cert 文件的密碼。 'passphrase' => 'your_pem_passphrase', // 是否允許自簽名證書。 'allow_self_signed' => true, // 是否需要驗證 SSL 證書。 'verify_peer' => false ) ); // ssl需要訪問443端口 $con = new AsyncTcpConnection('ws://echo.websocket.org:443', $context_option); // 設置以ssl加密方式訪問 $con->transport = 'ssl'; $con->onConnect = function($con) { $con->send('hello'); }; $con->onMessage = function($con, $data) { echo $data; }; $con->connect(); }; Worker::runAll(); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看