onBufferDrain

説明:

callback Worker::$onBufferDrain

各接続には独自のアプリケーションレイヤー送信バッファがあり、バッファのサイズはTcpConnection::$maxSendBufferSizeによって決定され、デフォルト値は1MBです。手動でサイズを変更することもでき、変更後はすべての接続に反映されます。

このコールバックは、アプリケーションレイヤーの送信バッファ内のデータがすべて送信された後にトリガーされます。一般的にはonBufferFullと組み合わせて使用されます。例えば、onBufferFull時に対端へのsendを停止し、onBufferDrainでデータの書き込みを再開します。

コールバック関数のパラメータ

$connection

接続オブジェクト、すなわちTcpConnectionインスタンスで、クライアント接続の操作に使用されます。例えば、データを送信接続を閉じるなどです。

サンプル

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

$worker = new Worker('websocket://0.0.0.0:8484');
$worker->onBufferFull = function(TcpConnection $connection)
{
    echo "bufferFull and do not send again\n";
};
$worker->onBufferDrain = function(TcpConnection $connection)
{
    echo "buffer drain and continue send\n";
};
// workerを実行
Worker::runAll();

ヒント:匿名関数をコールバックとして使用するだけでなく、ここを参考に他のコールバックの書き方を使用することもできます。

参照

onBufferFull 接続のアプリケーションレイヤー送信バッファが満杯の時にトリガーされます。