onBufferFull

    该回调可能会在调用Connection::send后立刻被触发,比如发送大数据或者连续快速的向对端发送数据,由于网络等原因数据被大量积压在对应连接的发送缓冲区,当超过TcpConnection::$maxSendBufferSize上限时触发。

    当调用Connection::send($A)后导致触发onBufferFull时,不管本次send的数据$A多大,即使大于TcpConnection::$maxSendBufferSize,本次要发送的数据仍然会被放入发送缓冲区。也就是说发送缓冲区实际放入的数据可能远远大于TcpConnection::$maxSendBufferSize,当发送缓冲区的数据已经大于TcpConnection::$maxSendBufferSize时,仍然继续Connection::send()数据,则这次send的$B数据不会放入发送缓冲区,而是被丢弃掉,并触发onError回调。

    $connection

    1. $worker = new Worker('websocket://0.0.0.0:8484');
    2. $worker->onBufferFull = function($connection)
    3. echo "bufferFull and do not send again\n";
    4. };
    5. Worker::runAll();

    onBufferDrain 当连接的应用层发送缓冲区数据全部发送完毕时触发