onClose

說明:

callback Worker::$onClose

當客戶端連接與Workerman斷開時觸發的回調函數。不管連接是如何斷開的,只要斷開就會觸發onClose。每個連接只會觸發一次onClose

注意:如果對端是由於斷網或者斷電等極端情況斷開的連接,這時由於無法及時發送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();

提示:除了使用匿名函數作為回調,還可以參考這裡使用其它回調寫法。