onClose
คำอธิบาย:
callback Worker::$onClose
เมื่อการเชื่อมต่อของไคลเอนต์ตัดกับ Workerman จะเรียกใช้ฟังก์ชันย้อนกลับ ไม่ว่าการเชื่อมต่อจะถูกตัดขาดอย่างไร เพียงแค่ถูกตัดก็จะเรียกใช้ onClose ฟังก์ชัน onClose จะถูกเรียกใช้เพียงครั้งเดียวสำหรับแต่ละการเชื่อมต่อ
หมายเหตุ: หากการเชื่อมต่อถูกตัดจากฝั่งตรงข้ามเนื่องจากปัญหาการเชื่อมต่อหรือไฟฟ้าดับในสถานการณ์ที่รุนแรง จะไม่มีการส่งแพ็กเกจ tcp fin ไปยัง workerman ได้ทันเวลา ทำให้ workerman ไม่สามารถทราบได้ว่าการเชื่อมต่อได้ถูกตัดขาด และจะไม่สามารถเรียกใช้ onClose ได้ทันเวลา สถานการณ์นี้จำเป็นต้องใช้การตรวจสอบสัญญาณหัวใจในชั้นแอปพลิเคชันเพื่อแก้ไข ใน workerman การตรวจสอบสัญญาณหัวใจได้รับการดำเนินการสามารถดูเพิ่มเติมได้ที่ที่นี่ หากคุณใช้ GatewayWorker framework สามารถใช้กลไกตรวจสอบสัญญาณหัวใจของ GatewayWorker framework ได้เลย สามารถดูเพิ่มเติมได้ที่ที่นี่
เนื่องจาก udp เป็นแบบไม่เชื่อมต่อ ดังนั้นเมื่อใช้ udp จะไม่เรียกใช้ฟังก์ชันย้อนกลับ onConnect และจะไม่เรียกใช้ฟังก์ชันย้อนกลับ onClose ด้วย
พารามิเตอร์ของฟังก์ชันย้อนกลับ
$connection
วัตถุการเชื่อมต่อ หมายถึง TcpConnection instance ใช้สำหรับจัดการการเชื่อมต่อของไคลเอนต์ เช่น ส่งข้อมูล, ปิดการเชื่อมต่อ เป็นต้น
ตัวอย่าง
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();
คำแนะนำ: นอกจากการใช้ฟังก์ชันไม่ระบุชื่อเป็นการเรียกกลับแล้ว ยังสามารถ ดูเพิ่มเติมที่นี่ เพื่อใช้รูปแบบการเรียกกลับอื่น ๆ ได้。