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 當連線的應用層發送緩衝區滿時觸發