بروتوكول 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

يمكن استخدام عميل telnet لتصحيح بروتوكول text، مثل المثال التالي:

قم بإنشاء ملف 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] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.7          PHP version:5.4.37
------------------------ WORKERS -------------------------------
user          worker        listen                         processes status
root          none          myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.

أعد فتح نافذة طرفية جديدة، واستخدم telnet للاختبار (يفضل استخدام telnet في نظام Linux)

افترض أننا نقوم بالاختبار على الجهاز المحلي،
نفذ في الطرفية telnet 127.0.0.1 5678
ثم أدخل hi واضغط على مفتاح الإدخال
ستستقبل البيانات hello world\n

telnet 127.0.0.1 5678
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hi
hello world