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 接続のアプリケーションレイヤー送信バッファが満杯の時にトリガーされます。