PHP Microservice Framework Swoft: WebSocket Server Teil 1


In diesem Artikel erfahren Sie Folgendes: Installieren und Ausführen des Swoft-Websocket-Servers.


Dieser Artikel gehört zu einer Reihe von Artikeln auf dem Swoft WebSocket Server. Lass uns etwas über Swoft lernen!

Was ist Swoft?


Swoft ist ein PHP-Hochleistungs-Microservice-Coroutine-Framework. Es wurde seit vielen Jahren veröffentlicht und ist die beste Wahl für PHP geworden.


Es kann wie Go, ein integrierter Coroutine-Webserver und ein allgemeiner Coroutine-Client sein und befindet sich unabhängig vom herkömmlichen PHP-FPM im Speicher.


Es gibt ähnliche Go-Sprachoperationen, ähnlich den flexiblen Annotationen des Spring Cloud-Frameworks.


Durch drei Jahre Akkumulation und Erforschung der Richtung hat Swoft Swoft zur Spring Cloud in der PHP-Welt gemacht, die die beste Wahl für das Hochleistungs-Framework und das Microservices-Management von PHP ist.


Github



Neues Projekt erstellen


Verwenden swoft-cli Tool swoft-cli , um ein neues Projekt für Websocket zu erstellen.


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

Server starten


Starten Sie den Websocket-Server mit dem Befehl php bin/swoft ws:start , den Sie unten sehen können:


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

Port des Websocket-Servers ist 18308

Modul


Verwenden Sie das swoft-cli Tool, um ein neues Websocket-Modul zu erstellen.


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

Code für das Echo-Modul ( app/WebSocket/EchoModule.php ) wie 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! :)'); } } 

Test


Verwenden swoft-devtool hier swoft-devtool , um den WebSocket-Server zu verbinden.


Verwenden php bin/swoft dclient:ws /echo in swoft-devtool Komponente swoft-devtool , um eine Verbindung zum WebSocket-Server herzustellen. Die Meldung zum Verbindungserfolg wird wie swoft-devtool .


 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/de471598/


All Articles