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

__construct 方法

void AsyncTcpConnection::__construct(string $remote_address, $context_option = null)

創(chuàng)建一個異步連接對象。

AsyncTcpConnection可以讓Workerman作為客戶端向遠程服務端發(fā)起異步連接,并通過send接口和onMessage回調異步發(fā)送和處理連接上的數(shù)據(jù)。

參數(shù)

參數(shù):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

參數(shù):$context_option

此參數(shù)要求(workerman >= 3.3.5)

用來設置socket上下文,例如利用bindto設置以哪個(網(wǎng)卡)ip和端口訪問外部網(wǎng)絡,設置ssl證書等。

參考 stream_context_create、 套接字上下文選項、SSL 上下文選項

注意

目前AsyncTcpConnection支持的協(xié)議有tcp、sslws、frametext。

同時支持自定義協(xié)議,參見如何自定義協(xié)議

其中ssl要求Workerman>=3.3.4,并安裝openssl擴展

目前不支持http協(xié)議的AsyncTcpConnection。

可以用new AsyncTcpConnection('ws://...')像瀏覽器一樣在workerman里發(fā)起websocket連接遠程websocket服務器,見示例。但是不能以 new AsyncTcpConnection('websocket://...')的形式在workerman里發(fā)起websocket連接。

示例

示例 1、異步訪問外部http服務

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$task = new Worker();
// 進程啟動時異步建立一個到www.baidu.com連接對象,并發(fā)送數(shù)據(jù)獲取數(shù)據(jù)
$task->onWorkerStart = function($task)
{
    // 不支持直接指定http,但是可以用tcp模擬http協(xié)議發(fā)送數(shù)據(jù)
    $connection_to_baidu = new AsyncTcpConnection('tcp://www.baidu.com:80');
    // 當連接建立成功時,發(fā)送http請求數(shù)據(jù)
    $connection_to_baidu->onConnect = function(AsyncTcpConnection $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(AsyncTcpConnection $connection_to_baidu, $http_buffer)
    {
        echo $http_buffer;
    };
    $connection_to_baidu->onClose = function(AsyncTcpConnection $connection_to_baidu)
    {
        echo "connection closed\n";
    };
    $connection_to_baidu->onError = function(AsyncTcpConnection $connection_to_baidu, $code, $msg)
    {
        echo "Error code:$code msg:$msg\n";
    };
    $connection_to_baidu->connect();
};

// 運行worker
Worker::runAll();

示例 2、異步訪問外部websocket服務,并設置以哪個本地ip及端口訪問

<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker();

$worker->onWorkerStart = function($worker) {
    // 如果你想只在一個進程里發(fā)起連接,可以通過判斷$worker->id來做到,例如下面是只在0號進程發(fā)起連接
    if ($worker->id != 0) {
        return;
    }
    // 設置訪問對方主機的本地ip及端口(每個socket連接都會占用一個本地端口)
    $context_option = array(
        'socket' => array(
            // ip必須是本機網(wǎng)卡ip,并且能訪問對方主機,否則無效
            'bindto' => '114.215.84.87:2333',
        ),
    );

    $con = new AsyncTcpConnection('ws://echo.websocket.org:80', $context_option);

    $con->onConnect = function(AsyncTcpConnection $con) {
        $con->send('hello');
    };

    $con->onMessage = function(AsyncTcpConnection $con, $data) {
        echo $data;
    };

    $con->connect();
};

Worker::runAll();

示例 3、異步訪問外部wss端口,并設置本地ssl證書

<?php
use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker();

$worker->onWorkerStart = function($worker){
    // 設置訪問對方主機的本地ip及端口以及ssl證書
    $context_option = array(
        'socket' => array(
            // ip必須是本機網(wǎng)卡ip,并且能訪問對方主機,否則無效
            'bindto' => '114.215.84.87:2333',
        ),
        // ssl選項,參考https://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
        )
    );

    // 發(fā)起異步連接
    $con = new AsyncTcpConnection('ws://echo.websocket.org:443', $context_option);

    // 設置以ssl加密方式訪問
    $con->transport = 'ssl';

    $con->onConnect = function(AsyncTcpConnection $con) {
        $con->send('hello');
    };

    $con->onMessage = function(AsyncTcpConnection $con, $data) {
        echo $data;
    };

    $con->connect();
};

Worker::runAll();
編輯于2024-08-14 17:10:07 完善本頁 +發(fā)起討論
贊助商
<li id="j093o"><legend id="j093o"></legend></li>
<center id="j093o"><optgroup id="j093o"></optgroup></center>
  • <rt id="j093o"><tr id="j093o"></tr></rt>

    <span id="j093o"></span>
      <span id="j093o"></span>