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 แบบอื่นได้