บทบาทของโปรโตคอลการสื่อสาร
เนื่องจาก TCP เป็นการสื่อสารแบบสตรีม ข้อมูลการร้องขอจากไคลเอนต์จะไหลเข้าสู่เซิร์ฟเวอร์เหมือนน้ำ ดังนั้นเมื่อเซิร์ฟเวอร์ตรวจพบว่ามีข้อมูลเข้ามา ควรตรวจสอบว่าข้อมูลนั้นสมบูรณ์หรือไม่ เนื่องจากอาจมีเพียงข้อมูลบางส่วนของการร้องขอที่มาถึงเซิร์ฟเวอร์ หรืออาจมีการร้องขอหลายรายการที่ถูกเชื่อมต่อกันมาถึงเซิร์ฟเวอร์ การพิจารณาว่าข้อมูลการร้องขอทั้งหมดมาถึงหรือไม่ หรือจะแยกการร้องขอจากหลายรายการที่เชื่อมต่อกันนั้น จำเป็นต้องกำหนดโปรโตคอลการสื่อสารขึ้นมา
ทำไมต้องกำหนดโปรโตคอลใน Workerman?
การพัฒนา PHP แบบดั้งเดิมมักจะทำงานบนพื้นฐานของ Web และส่วนใหญ่ใช้โปรโตคอล HTTP การวิเคราะห์และจัดการโปรโตคอล HTTP จะถูกจัดการโดย WebServer โดยตรง ดังนั้นนักพัฒนาจึงไม่ต้องกังวลเกี่ยวกับโปรโตคอล อย่างไรก็ตามเมื่อเราต้องการพัฒนาบนพื้นฐานของโปรโตคอลที่ไม่ใช่ HTTP นักพัฒนาจะต้องพิจารณาถึงเรื่องโปรโตคอล
โปรโตคอลที่ Workerman รองรับ
Workerman รองรับโปรโตคอล HTTP, websocket, text (ดูรายละเอียดในภาคผนวก), frame (ดูรายละเอียดในภาคผนวก) และ ws (ดูรายละเอียดในภาคผนวก) เมื่อต้องการสื่อสารเป็นพื้นฐานตามโปรโตคอลเหล่านี้ สามารถใช้ได้โดยตรง วิธีการใช้คือ เมื่อเริ่มต้น Worker ให้ระบุโปรโตคอล ตัวอย่างเช่น
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// websocket://0.0.0.0:2345 หมายถึงการฟังที่พอร์ต 2345 ด้วยโปรโตคอล websocket
$websocket_worker = new Worker('websocket://0.0.0.0:2345');
// โปรโตคอล text
$text_worker = new Worker('text://0.0.0.0:2346');
// โปรโตคอล frame
$frame_worker = new Worker('frame://0.0.0.0:2347');
// tcp Worker ซึ่งจะส่งข้อมูลโดยตรงผ่าน socket โดยไม่ใช้โปรโตคอลแอปพลิเคชันใด ๆ
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// udp Worker ซึ่งจะไม่ใช้โปรโตคอลแอปพลิเคชันใด ๆ
$udp_worker = new Worker('udp://0.0.0.0:2349');
// unix domain Worker ซึ่งจะไม่ใช้โปรโตคอลแอปพลิเคชันใด ๆ
$unix_worker = new Worker('unix:///tmp/wm.sock');
การใช้โปรโตคอลการสื่อสารที่กำหนดเอง
เมื่อต้องการโปรโตคอลการสื่อสารที่ Workerman มีไม่เพียงพอต่อความต้องการในการพัฒนา นักพัฒนาสามารถกำหนดโปรโตคอลการสื่อสารของตนเองได้ วิธีการกำหนดดูได้ในเนื้อหาหลังจากนี้
หมายเหตุ:
Workerman มีโปรโตคอล text ในตัวที่มีรูปแบบโปรโตคอลเป็นข้อความ + เครื่องหมายขึ้นบรรทัดใหม่ การพัฒนาและการดีบักโปรโตคอล text นั้นง่ายมาก สามารถใช้ได้ในกรณีที่กำหนดโปรโตคอลที่กำหนดเองได้มากมาย และยังรองรับการดีบักด้วย telnet หากนักพัฒนาต้องการพัฒนาโปรโตคอลแอปพลิเคชันของตนเอง สามารถใช้โปรโตคอล text ได้โดยไม่ต้องพัฒนาแยกต่างหาก
คำอธิบายโปรโตคอล text อ้างอิงจาก《ภาคผนวก ส่วนโปรโตคอล Text》