onBufferDrain
Descrição:
callback Worker::$onBufferDrain
Cada conexão tem seu próprio buffer de envio de camada de aplicativo, o tamanho do buffer é determinado por TcpConnection::$maxSendBufferSize
, com o valor padrão de 1MB, podendo ser alterado manualmente. Após a alteração, a mudança afetará todas as conexões.
Esse retorno de chamada é acionado após todos os dados do buffer de envio de camada de aplicativo serem enviados. Geralmente, é usado em conjunto com onBufferFull
, por exemplo, interrompendo o envio de dados para o destinatário em onBufferFull
e retomando a gravação de dados em onBufferDrain
.
Parâmetros da função de retorno de chamada:
$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 e não enviar novamente\n";
};
$worker->onBufferDrain = function(TcpConnection $connection)
{
echo "buffer drenado e continuar o envio\n";
};
// Execute o worker
Worker::runAll();
Dica: Além de usar uma função anônima como retorno de chamada, você também pode consultar aqui para outras formas de retorno de chamada.
Veja também:
onBufferFull Quando o buffer de envio de camada de aplicativo da conexão estiver cheio.