دور بروتوكولات الاتصال
بما أن TCP يعتمد على التدفق، فإن بيانات الطلب التي يرسلها العميل تتدفق إلى الخادم مثل تدفق الماء. عند اكتشاف الخادم وجود بيانات قادمة، يجب عليه التحقق مما إذا كانت البيانات كاملة، لأنه قد يصل فقط جزء من بيانات طلب واحد إلى الخادم، أو حتى قد تصل عدة طلبات معًا إلى الخادم. لتحديد ما إذا كان الطلب قد وصل بالكامل أو لفصل الطلبات المتصلة، من الضروري تحديد مجموعة من بروتوكولات الاتصال.
لماذا يجب وضع بروتوكول في Workerman؟
تطوير PHP التقليدي يعتمد عادة على الويب، ومعظم الاتصالات تتم باستخدام بروتوكول HTTP. معالجة تحليل بروتوكول 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 للاستماع على المنفذ 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، يعتمد مباشرة على نقل socket، دون استخدام أي بروتوكولات طبقة تطبيقية
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// عامل udp، دون استخدام أي بروتوكولات طبقة تطبيقية
$udp_worker = new Worker('udp://0.0.0.0:2349');
// عامل unix domain، دون استخدام أي بروتوكولات طبقة تطبيقية
$unix_worker = new Worker('unix:///tmp/wm.sock');
استخدام بروتوكول اتصال مخصص
عندما لا تلبي بروتوكولات الاتصال المدمجة في Workerman احتياجات التطوير، يمكن للمطورين تخصيص بروتوكول الاتصال الخاص بهم، وستتم مناقشة طريقة التخصيص في القسم التالي.
تنبيه:
تحتوي Workerman على بروتوكول text مدمج، وصيغة البروتوكول هي نص + حرف نقل. تطوير وتصحيح البروتوكول النصي بسيط للغاية ويمكن استخدامه في معظم سيناريوهات البروتوكولات المخصصة، ويدعم أيضًا تصحيح telnet. إذا كان المطور يريد تطوير بروتوكول تطبيق خاص به، يمكنه استخدام بروتوكول text مباشرة دون الحاجة إلى تطوير جديد.
لمزيد من التفاصيل حول بروتوكول text، راجع “الملحق قسم بروتوكول text”