โปรโตคอล text
Workerman ได้กำหนดโปรโตคอลที่เรียกว่า text รูปแบบโปรโตคอลคือ
ข้อมูลบรรจุภัณฑ์+อักขระขึ้นบรรทัดใหม่หมายความว่าให้เพิ่มอักขระขึ้นบรรทัดใหม่ที่ปลายทั้งสิ้นของข้อมูลบรรจุภัณฑ์เพื่อแสดงว่าบรรจุภัณฑ์นั้นสิ้นสุดแล้ว
ตัวอย่างสตริง buffer1 และ buffer2 ด้านล่างนี้ตรงตามโปรโตคอล text:
// เพิ่มการขึ้นบรรทัดใหม่ให้กับข้อความ
$buffer1 = 'abcdefghijklmn
';
// ใน php เครื่องหมายคำพูดคู่ "\n" แสดงถึงอักขระขึ้นบรรทัดใหม่ เช่น "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";
// สร้างการเชื่อมต่อ socket กับเซิร์ฟเวอร์
$client = stream_socket_client('tcp://127.0.0.1:5678');
// ส่งข้อมูล buffer1 โดยใช้โปรโตคอล text
fwrite($client, $buffer1);
// ส่งข้อมูล buffer2 โดยใช้โปรโตคอล text
fwrite($client, $buffer2);
โปรโตคอล text นั้นง่ายและใช้งานสะดวก หากนักพัฒนาต้องการโปรโตคอลที่เป็นของตัวเอง เช่น การส่งข้อมูลกับแอปพลิเคชันมือถือหรือการสื่อสารกับฮาร์ดแวร์ สามารถพิจารณาใช้โปรโตคอล text ซึ่งทำให้การพัฒนาและการดีบักทำได้อย่างสะดวก
การดีบักโปรโตคอล text
โปรโตคอล text สามารถใช้ไคลเอนต์ telnet ในการดีบัก เช่นในตัวอย่างด้านล่าง:
สร้างไฟล์ test.php ใหม่
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;
$text_worker = new Worker("text://0.0.0.0:5678");
$text_worker->onMessage = function($connection, $data)
{
var_dump($data);
$connection->send("hello world");
};
Worker::runAll();
รัน php test.php start จะปรากฏดังนี้
php test.php start
Workerman[test.php] เริ่มต้นในโหมด DEBUG
----------------------- WORKERMAN -----------------------------
เวอร์ชัน Workerman:3.2.7 เวอร์ชัน PHP:5.4.37
------------------------ WORKERS -------------------------------
ผู้ใช้ งาน ฟัง สถานะกระบวนการ
root none myTextProtocol://0.0.0.0:5678 1 [OK]
----------------------------------------------------------------
กด Ctrl-C เพื่อออก. เริ่มต้นสำเร็จ.
เปิดเทอร์มินัลใหม่และใช้ telnet ทดสอบ (แนะนำให้ใช้ telnet ในระบบ linux)
สมมุติว่าทดสอบในเครื่อง
ในเทอร์มินัลให้รัน telnet 127.0.0.1 5678
จากนั้นพิมพ์ hi แล้วกด Enter
จะได้รับข้อมูล hello world\n
telnet 127.0.0.1 5678
กำลังพยายาม 127.0.0.1...
เชื่อมต่อกับ 127.0.0.1.
อักขระหลบหนีคือ '^]'.
hi
hello world