คําสัญญาการสื่อสารมีความสำคัญเนื่องจาก TCP เป็นโปรโตคอลที่เกี่ยวกับการส่งผ่านข้อมูลเป็นกระแส ข้อมูลคำขอที่ส่งมาจากไคลเอ็นต์จะถูกส่งไปที่เซิร์ฟเวอร์เหมือนน้ำไหลเข้ามา เมื่อเซิร์ฟเวอร์ตรวจพบว่ามีข้อมูลเข้ามา มันจะต้องตรวจสอบว่าข้อมูลมีความสมบูรณ์หรือไม่ เพราะอาจจะมีแค่บางส่วนของคำขอถึงเซิร์ฟเวอร์ หรือแม้แต่อาจจะเป็นการร้องขอหลายคำขอที่เข้ามาพร้อมกัน การวางตัวเพื่อแยกแยะว่าคำขอทั้งหมดถึงหรือไม่ หรือแยกแยะคำขอจากหลายที่พร้อมกันที่เข้ามา จึงจำเป็นต้องกำหนดคำสัญญาการสื่อสาร
ทำไมต้องกำหนดโปรโตคอลใน Workerman
การพัฒนา PHP แบบดั้งเดิมจะใช้เทคโนโลยีเว็บโดยมาก ซึ่งโปรโตคอล HTTP ทั้งหมดจะถูกเซิร์ฟเวอร์เป็นผู้รับผิดชอบในการดำเนินการและจัดการกับการแยกคำสัญญา ดังนั้นผู้พัฒนาจึงไม่จำเป็นต้องกักกันของเรื่องการกำหนดคำสัญญา อย่างไรก็ตามเมื่อความจำเป็นขึ้นว่าเราต้องการพัฒนาโดยใช้โปรโตคอลที่ไม่ใช่ 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 หมายถึงการใช้โปรโตคอล websocket หากเปิด port 2345
$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 ทำงานโดยตรงบนการส่งข้อมูลและใช้โปรโตคอลทางชั้นนอกของแอปพลิเคชัน
$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 ที่มีมาตรฐานเป็นข้อมูลข้อความ ร่วมกับสัญญานี้ง่ายต่อการพัฒนาและการทดสอบ สามารถใช้สำหรับแทบทุกรูปแบบของคำสัญญาที่กำหนดเอง และรองรับการทดสอบด้วยการใช้ telnet หากผู้พัฒนาต้องการพัฒนาโปรโตคอลของตัวเอง สามารถใช้คำสัญญา text ได้โดยตรง โดยไม่จำเป็นต้องพัฒนาขึ้นมาใหม่อีกที
ฉบับโปรโตคอล text ของอัมขรวมที่เกี่ยวข้อง