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::runAll();

팁: 익명 함수를 콜백으로 사용하는 것 외에도 여기서 다른 콜백 작성 방법을 참고할 수 있습니다.