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();
提示:除了使用匿名函數作為回調,還可以 參考這裡 使用其他回調寫法。