PHP Microservice Framework Swoft: WebSocket Server Parte 1


Este artículo que vamos a aprender es: Cómo instalar y ejecutar el servidor swoft websocket.


Este artículo es uno de una serie de artículos sobre Swoft WebSocket Server. ¡Aprendamos sobre Swoft!

¿Qué es swoft?


Swoft es un marco de trabajo de rutina de microservicio de alto rendimiento de PHP. Se ha publicado durante muchos años y se ha convertido en la mejor opción para php.


Puede ser como Go, un servidor web de rutina incorporado y un cliente de rutina común y reside en la memoria, independiente del PHP-FPM tradicional.


Existen operaciones de lenguaje Go similares, similares a las anotaciones flexibles del marco Spring Cloud.


A través de tres años de acumulación y exploración de direcciones, Swoft ha convertido a Swoft en la Nube de Primavera en el mundo PHP, que es la mejor opción para el marco de trabajo de alto rendimiento y la gestión de microservicios de PHP.


Github



Crear nuevo proyecto


Utilice la herramienta swoft-cli para crear un nuevo proyecto para Websocket.


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

Iniciar servidor


Inicie el servidor Websocket con php bin/swoft ws:start comando de php bin/swoft ws:start , puede ver a continuación:


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

El puerto del servidor Websocket es 18308

Modulo


Use la herramienta swoft-cli para crear un nuevo módulo websocket.


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

Código para el módulo de eco ( app/WebSocket/EchoModule.php ) como este:


 <?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! :)'); } } 

Prueba


Aquí use swoft-devtool para conectar el servidor WebSocket.


Use el php bin/swoft dclient:ws /echo en el componente swoft-devtool para conectar el servidor WebSocket, puede ver el mensaje de éxito de la conexión como se muestra a continuación.


 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> 

Github


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


All Articles