onClose
説明:
callback Worker::$onClose
クライアントの接続がWorkermanと切断されたときにトリガーされるコールバック関数です。接続がどのように切断されたかに関わらず、切断されるとonCloseがトリガーされます。各接続はonCloseが1回だけトリガーされます。
注意:相手側がネットワーク障害や停電などの極端な状況により切断された場合、このときはtcpのfinパケットをWorkermanにタイムリーに送信できないため、Workermanは接続が切断されたことを把握できず、onCloseをタイムリーにトリガーすることができません。このような場合は、アプリケーション層のハートビートで解決する必要があります。Workermanにおける接続のハートビートの実装についてはこちらを参照してください。GatewayWorkerフレームワークを使用している場合は、GatewayWorkerフレームワークのハートビートメカニズムをそのまま使用することができます。詳細はこちらを参照してください。
udpはコネクションレスであるため、udpを使用する場合はonConnectコールバックがトリガーされず、onCloseコールバックもトリガーされません。
コールバック関数のパラメータ
$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->onClose = function(TcpConnection $connection)
{
echo "connection closed\n";
};
// Workerを実行
Worker::runAll();
ヒント:匿名関数をコールバックとして使用する以外にも、こちらを参照して他のコールバックの書き方を使用することができます。