onClose
說明:
callback Worker::$onClose
當(dāng)客戶端連接與Workerman斷開時觸發(fā)的回調(diào)函數(shù)。不管連接是如何斷開的,只要斷開就會觸發(fā)onClose
。每個連接只會觸發(fā)一次onClose
。
注意:如果對端是由于斷網(wǎng)或者斷電等極端情況斷開的連接,這時由于無法及時發(fā)送tcp的fin包給workerman,workerman就無法得知連接已經(jīng)斷開,也就無法及時觸發(fā)onClose
。這種情況需要通過應(yīng)用層心跳來解決。workerman中連接的心跳實現(xiàn)參見這里。如果使用的是GatewayWorker框架,則直接使用GatewayWorker框架的心跳機(jī)制即可,參見這里。
由于udp是無連接的,所以當(dāng)使用udp時不會觸發(fā)onConnect回調(diào),也不會觸發(fā)onClose回調(diào)。
回調(diào)函數(shù)的參數(shù)
$connection
連接對象,即TcpConnection實例,用于操作客戶端連接,如發(fā)送數(shù)據(jù),關(guān)閉連接等
范例
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";
};
// 運(yùn)行worker
Worker::runAll();
提示:除了使用匿名函數(shù)作為回調(diào),還可以參考這里使用其它回調(diào)寫法。