onConnect
คำอธิบาย:
callback Worker::$onConnect
เมื่อลูกค้าทำการเชื่อมต่อกับ Workerman (หลังจากที่การจับมือ TCP สามครั้งเสร็จสิ้น) จะมีการเรียกใช้ฟังก์ชัน callback นี้ การเชื่อมต่อแต่ละครั้งจะกระตุ้นการเรียกใช้ onConnect เพียงครั้งเดียว
หมายเหตุ: เหตุการณ์ onConnect เพียงแค่หมายถึงลูกค้าได้ทำการจับมือ TCP สามครั้งเสร็จสิ้นแล้ว ในขณะนี้ลูกค้ายังไม่ได้ส่งข้อมูลใด ๆ มาเลย ในช่วงนี้นอกเหนือจากการใช้ $connection->getRemoteIp() เพื่อรับ IP ของฝ่ายตรงข้าม ไม่มีข้อมูลหรือข้อมูลอื่นใดที่สามารถใช้ในการระบุลูกค้าได้ ดังนั้นในเหตุการณ์ onConnect จึงไม่สามารถยืนยันได้ว่าฝ่ายตรงข้ามคือใคร หากต้องการทราบว่าฝ่ายตรงข้ามคือใคร จำเป็นต้องให้ลูกค้าส่งข้อมูลการยืนยันตัวตน เช่น token หรือชื่อผู้ใช้และรหัสผ่าน เป็นต้น ซึ่งจะทำใน onMessage callback
เนื่องจาก UDP เป็นการเชื่อมต่อที่ไม่มีการรักษาสถานะ ดังนั้นเมื่อใช้ UDP จะไม่กระตุ้นการเรียกใช้ onConnect callback และจะไม่กระตุ้นการเรียกใช้ onClose callback ด้วย
พารามิเตอร์ของฟังก์ชัน callback
$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->onConnect = function(TcpConnection $connection)
{
echo "new connection from ip " . $connection->getRemoteIp() . "\n";
};
// เรียกใช้ worker
Worker::runAll();
คำแนะนำ: นอกเหนือจากการใช้ฟังก์ชันแบบไม่มีชื่อเป็น callback แล้ว ยังสามารถ ดูที่นี่ เพื่อใช้การเขียน callback แบบอื่นได้