kanata-php / conveyor-server-client
Server-Side WebSocket Client ready for Socket Conveyor
Fund package maintenance!
kanata-php
Requires
- php: ^8.2
- textalk/websocket: ^1.5
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.32.0
- kanata-php/socket-conveyor: ^3.0.1-beta
- openswoole/core: ^22.1
- openswoole/ide-helper: ^22.0
- phpunit/phpunit: ^9.5
README
A server-side client for the php package kanata-php/socket-conveyor
Prerequisites
- PHP >= 8.0
- PHP OpenSwoole Extension
Install
composer require kanata-php/conveyor-server-client
Description
This is a server-side client for the Socket Conveyor PHP package.
Usage
Once installed, the following example shows how it works to use this package.
use Kanata\ConveyorServerClient\Client; $options = [ 'onMessageCallback' => function(Client $currentClient, string $message) { echo 'Message received: ' . $message . PHP_EOL; }, ]; $client = new Client($options); $client->connect();
With the previous example you'll have a PHP script connected and waiting for messages to come. For each message received there will be a printed message in the terminal executing this script. This client will try to connect to ws://127.0.0.1:8000
. To understand more Socket Conveyor channel and listeners you can head to its documentation.
Important: this example doesn't have timeout. This means it will be running until its process gets killed. If you just need to listen for a limited time, or need a timeout for any other reason, use the
timeout
option.
This package has the following options (showing its respective defaults):
[ /** * @var string */ 'protocol' => 'ws', /** * @var string */ 'uri' => '127.0.0.1', /** * @var int */ 'port' => 8000, /** * @var string */ 'query' => '', /** * @var ?string */ 'channel' => null, /** * @var ?string */ 'listen' => null, /** * @var ?callable */ 'onOpenCallback' => null, /** * @var ?callable */ 'onReadyCallback' => null, /** * Callback for incoming messages. * Passed parameters: * - \WebSocket\Client $client * - string $message * * @var ?callable */ 'onMessageCallback' => null, /** * Callback for disconnection. * Passed parameters: * - \WebSocket\Client $client * - int $reconnectionAttemptsCount * * @var ?callable */ 'onDisconnectCallback' => null, /** * Callback for Reconnection moment. * Passed parameters: * - \WebSocket\Client $client * - int \Throwable $e * * @var ?callable */ 'onReconnectionCallback' => null, /** * When positive, considered in seconds * * @var int */ 'timeout' => -1, /** * @var bool */ 'reconnect' => false; /** * Number of attempts if disconnects * For this to keeps trying forever, set it to -1. * * @var int */ 'reconnectionAttempts' => = 0; /** * Interval to reconnect in seconds * * @var int */ 'reconnectionInterval' => = 2; ]
This is this package's Conveyor Client interface:
namespace Kanata\ConveyorServerClient; use WebSocket\Client; interface ClientInterface { public function connect(): void; public function getClient(): ?Client; public function close(): void; public function send(string $message): void; public function sendRaw(string $message): void; }
Author
👤 Savio Resende
- Website: https://savioresende.com.br
- GitHub: @lotharthesavior
📝 License
Copyright © 2022 Savio Resende.