โปรโตคอล 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