onClose

Описание:

callback Worker::$onClose

Функция обратного вызова, которая вызывается, когда клиентское соединение разрывается с Workerman. Независимо от того, как произошло разрывание соединения, как только оно разрывается, будет вызвана функция onClose. Каждое соединение вызовет onClose только один раз.

Обратите внимание: если соединение разорвано из-за крайних случаев, таких как отключение интернета или отключение электроэнергии, Workerman не может своевременно отправить TCP пакет FIN, поэтому он не сможет узнать, что соединение разорвано, и не сможет немедленно вызвать onClose. Эта ситуация должна решаться с помощью механизма сердцебиения на уровне приложения. Реализация сердцебиения в Workerman для соединений рассматривается здесь. Если используется фреймворк 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 "соединение закрыто\n";
};
// Запуск работника
Worker::runAll();

Подсказка: кроме использования анонимной функции в качестве обратного вызова, также можно ознакомиться здесь с другими способами написания обратных вызовов.