PHP Microservice Framework Swoft: WebSocket Server Part 1


هذه المقالة التي سنتعلمها هي: كيفية تثبيت وتشغيل خادم الويب swoft.


هذه المقالة هي واحدة من سلسلة من المقالات على خادم Swoft WebSocket. دعنا نتعلم عن Swoft!

ما هو Swoft؟


Swoft هو إطار PHOTO microservice عالي الأداء. تم نشره لسنوات عديدة وأصبح الخيار الأفضل لـ php.


يمكن أن يكون مثل Go ، خادم الويب coroutine المدمج والعميل coroutine المشترك ويقيم في الذاكرة ، مستقلة عن PHP-FPM التقليدية.


هناك عمليات مماثلة للغة Go ، مشابهة للشروح المرنة لإطار Spring Cloud.


من خلال ثلاث سنوات من التراكم واستكشاف الاتجاهات ، جعلت Swoft Swoft the Spring Cloud في عالم PHP ، وهو الخيار الأفضل لإطار عمل PHP عالي الأداء وإدارة الخدمات المصغرة.


جيثب



إنشاء مشروع جديد


استخدم أداة swoft-cli لإنشاء مشروع جديد لـ Websocket.


 php swoftcli.phar create:app --type ws swoft-ws-app cd swoft-ws-app composer install 

بدء الخادم


بدء تشغيل خادم Websocket باستخدام php bin/swoft ws:start command ، يمكنك رؤية أدناه :


 $ php bin/swoft ws:start Information Panel ******************************************************************************************* * WebSocket | Listen: 0.0.0.0:18308, type: TCP, mode: Process, worker: 8 ******************************************************************************************* 

ميناء Websocket قطع هو 18308

وحدة


استخدم أداة swoft-cli لإنشاء وحدة Websocket جديدة.


 php swoftcli.phar gen:ws-mod echo --prefix /echo 

رمز وحدة الصدى ( app/WebSocket/EchoModule.php ) مثل هذا:


 <?php declare(strict_types=1); namespace App\WebSocket; use Swoft\Http\Message\Request; use Swoft\Http\Message\Response; use Swoft\WebSocket\Server\Annotation\Mapping\WsModule; use Swoft\WebSocket\Server\Annotation\Mapping\OnOpen; use Swoft\WebSocket\Server\Annotation\Mapping\OnHandshake; use Swoole\WebSocket\Server; /** * Class EchoModule - This is an module for handle websocket * * @WsModule("/echo") */ class EchoModule { /** * @OnHandshake() * @param Request $request * @param Response $response * @return array */ public function checkHandshake(Request $request, Response $response): array { // some validate logic ... return [true, $response]; } /** * @OnOpen() * @param Server $server * @param Request $request * @param int $fd * @return mixed */ public function onOpen(Server $server, Request $request, int $fd) { $server->push($fd, 'hello, welcome! :)'); } } 

اختبار


هنا استخدم swoft-devtool لتوصيل خادم WebSocket.


استخدم php bin/swoft dclient:ws /echo الأمر php bin/swoft dclient:ws /echo في مكون swoft-devtool لتوصيل خادم WebSocket ، يمكنك أن ترى رسالة نجاح الاتصال كما هو موضح أدناه.


 Begin connecting to websocket server: 127.0.0.1:18308 path: /echo Success connect to websocket server. Now, you can send message INTERACTIVE ================================================================================ server> ?Opened, welcome #1! client> hi server> Recv: hi client> 

جيثب


Source: https://habr.com/ru/post/ar471598/


All Articles