onBufferDrain

Descrição:

callback Worker::$onBufferDrain

Cada conexão tem um buffer de envio na camada de aplicativo separado, e o tamanho do buffer é determinado por TcpConnection::$maxSendBufferSize, que tem um valor padrão de 1MB, podendo ser manualmente ajustado. Qualquer alteração no tamanho afetará todas as conexões.

Esse callback é acionado quando todos os dados no buffer de envio da camada de aplicativo são enviados. Geralmente, é utilizado em conjunto com onBufferFull, por exemplo, ao atingir onBufferFull, parar de enviar dados para o parceiro, e ao onBufferDrain, retomar a escrita de dados.

Parâmetros da função de callback

$connection

Objeto de conexão, ou seja, uma instância de TcpConnection, usada para operar a conexão do cliente, como enviar dados, fechar a conexão, etc.

Exemplo

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";
};
// Executar o worker
Worker::runAll();

Dica: além de usar funções anônimas como callback, você também pode consultar aqui para usar outros formatos de callback.

Veja também

onBufferFull é acionado quando o buffer de envio da camada de aplicativo da conexão está cheio.