onBufferDrain
說(shuō)明:
callback Worker::$onBufferDrain
每個(gè)連接都有一個(gè)單獨(dú)的應(yīng)用層發(fā)送緩沖區(qū),緩沖區(qū)大小由TcpConnection::$maxSendBufferSize
決定,默認(rèn)值為1MB,可以手動(dòng)設(shè)置更改大小,更改后會(huì)對(duì)所有連接生效。
該回調(diào)在應(yīng)用層發(fā)送緩沖區(qū)數(shù)據(jù)全部發(fā)送完畢后觸發(fā)。一般與onBufferFull配合使用,例如在onBufferFull時(shí)停止向?qū)Χ死^續(xù)send數(shù)據(jù),在onBufferDrain恢復(fù)寫(xiě)入數(shù)據(jù)。
回調(diào)函數(shù)的參數(shù)
$connection
連接對(duì)象,即TcpConnection實(shí)例,用于操作客戶端連接,如發(fā)送數(shù)據(jù),關(guān)閉連接等
范例
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";
};
// 運(yùn)行worker
Worker::runAll();
提示:除了使用匿名函數(shù)作為回調(diào),還可以參考這里使用其它回調(diào)寫(xiě)法。
參見(jiàn)
onBufferFull 當(dāng)連接的應(yīng)用層發(fā)送緩沖區(qū)滿時(shí)觸發(fā)