kanata-php / conveyor-server-client
Server-Side WebSocket Client ready for Socket Conveyor
                                    Fund package maintenance!
                                                                            
                                                                                                                                        kanata-php
                                                                                    
                                                                
Installs: 175
Dependents: 2
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/kanata-php/conveyor-server-client
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
timeoutoption.
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.