onClose

Giải thích:

callback Worker::$onClose

Hàm callback được kích hoạt khi kết nối của khách hàng bị ngắt với Workerman. Dù kết nối bị ngắt theo cách nào, chỉ cần ngắt kết nối sẽ kích hoạt onClose. Mỗi kết nối chỉ kích hoạt một lần onClose.

Lưu ý: Nếu kết nối bị ngắt do các tình huống cực đoan như mất kết nối mạng hoặc mất điện, thì do không thể gửi gói tcp fin kịp thời cho workerman, workerman sẽ không biết rằng kết nối đã bị ngắt, do đó cũng không thể kích hoạt kịp thời onClose. Tình huống này cần được giải quyết thông qua heartbeat ở tầng ứng dụng. Cách triển khai heartbeat trong workerman có thể tham khảo tại đây. Nếu bạn đang sử dụng framework GatewayWorker, bạn có thể sử dụng cơ chế heartbeat của GatewayWorker, tham khảo tại đây.

Do udp là không kết nối, nên khi sử dụng udp, sẽ không kích hoạt callback onConnect, cũng như không kích hoạt callback onClose.

Tham số của hàm callback

$connection

Đối tượng kết nối, tức là TcpConnection instance, được sử dụng để thao tác với kết nối của khách hàng, như gửi dữ liệu, đóng kết nối v.v.

Ví dụ

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";
};
// Chạy worker
Worker::runAll();

Gợi ý: Ngoài việc sử dụng hàm ẩn danh làm callback, bạn cũng có thể tham khảo tại đây để sử dụng các cách viết callback khác.