pipe

説明:

void Connection::pipe(TcpConnection $target_connection)

パラメータ

現在の接続のデータストリームをターゲット接続に導入します。流量制御が内蔵されています。このメソッドはTCPプロキシとして非常に便利です。

サンプル TCPプロキシ

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

$worker = new Worker('tcp://0.0.0.0:8483');
$worker->count = 12;

// tcp接続が確立された後
$worker->onConnect = function(TcpConnection $connection)
{
    // ローカル80ポートへの非同期接続を確立
    $connection_to_80 = new AsyncTcpConnection('tcp://127.0.0.1:80');
    // 現在のクライアント接続のデータを80ポート接続に向ける設定
    $connection->pipe($connection_to_80);
    // 80ポート接続からのデータをクライアント接続に向ける設定
    $connection_to_80->pipe($connection);
    // 非同期接続を実行
    $connection_to_80->connect();
};

// ワーカーを実行
Worker::runAll();