onConnect

คำอธิบาย:

callback Worker::$onConnect

เมื่อเชื่อมต่อระหว่าง client กับ Workerman เสร็จสมบูรณ์ (หลังจากทำ TCP 3-way handshake) จะเกิดการเรียกใช้ callback function นี้ โดยทุกครั้งที่มีการเชื่อมต่อ จะมีการเรียกใช้ callback onConnect ครั้งเดียวเท่านั้น

โปรดทราบ: เหตุการณ์ onConnect อย่างเดียวจะแสดงถึงการเชื่อมต่อระหว่าง client กับ Workerman ทำ 3-way handshake สำเร็จเท่านั้น ในขณะนี้ client ยังไม่ได้ส่งข้อมูลอะไรมา แต่นอกจากการใช้ $connection->getRemoteIp() เพื่อได้ IP ของฝั่งตรงข้ามแล้ว ไม่มีข้อมูลหรือข้อมูลที่สามารถใช้ในการระบุว่าฝักตรงข้ามคือใคร ดังนั้นในเหตุการณ์ onConnect จึงไม่สามารถระบุตรวจสอบว่าฝั่งตรงข้ามคือใคร หากต้องการทราบว่าฝั่งตรงข้ามคือใคร จะต้องมีการส่งข้อมูลการรับรองตัวตน โดยอาจจะเป็น token หรือชื่อผู้ใช้และรหัสผ่านและอื่น ๆ ในCallback onMessage

เนื่องจาก UDP เป็นโปรโตคอลที่ไม่มีการเชื่อมต่อ ดังนั้นเมื่อใช้ UDP จะไม่เกิดการเรียกใช้ callback onConnect และไม่เกิดการเรียกใช้ callback onClose

พารามิเตอร์ของฟังก์ชัน callback

$connection

Object ของการเชื่อมต่อ หรือแบบ TcpConnection instance ที่ใช้ในการจัดการการเชื่อมต่อกับ client เช่น ส่งข้อมูล หรือ ปิดการเชื่อมต่อ และอื่น ๆ

ตัวอย่าง

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