Skip to content

printu/socket-client

 
 

Repository files navigation

Socket Client for PHP HTTP

Latest Version Software License Build Status Code Coverage Quality Score Total Downloads

The socket client use the stream extension from PHP, which is integrated into the core.

Install

Via Composer

$ composer require php-http/socket-client

Features

  • TCP Socket Domain (tcp://hostname:port)
  • UNIX Socket Domain (unix:///path/to/socket.sock)
  • TLS / SSL Encyrption
  • Client Certificate (only for php > 5.6)

Usage

The SocketHttpClient class need a message factory in order to work:

$options = [];
$client = new new Http\Socket\SocketHttpClient($messageFactory, $options);

The $options array allow to configure the socket client.

Options

Here is the list of available options:

  • remote_socket: Specify the remote socket where the library should send the request to

Can be a tcp remote : tcp://hostname:port

Can be a unix remote : unix://hostname:port

Do not use a tls / ssl scheme, this is handle by the ssl option.

If not set, the client will try to determine it from the request uri or host header.

  • timeout : Timeout in milliseconds for writing request and reading response on the remote
  • ssl : Activate or deactivate the ssl / tls encryption
  • stream_context_options : Custom options for the context of the stream, same as PHP stream context options

As an example someone may want to pass a client certificate when using the ssl, a valid configuration for this use case would be:

$options = [
   'stream_context_options' => [
       'ssl' => [
           'local_cert' => '/path/to/my/client-certificate.pem'
       ]
   ]
]
$client = new Http\Socket\SocketHttpClient($messageFactory, $options);
  • stream_context_params : Custom parameters for the context of the stream, same as PHP stream context parameters
  • write_buffer_size : When sending the request we need to bufferize the body, this option specify the size of this buffer, default is 8192, if you are sending big file with your client it may be interesting to have a bigger value in order to increase performance.

Testing

First launch the http server:

$ ./vendor/bin/http_test_server > /dev/null 2>&1 &

Then the test suite:

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please contact us at [email protected].

License

The MIT License (MIT). Please see License File for more information.

Releases

No releases published

Packages

No packages published

Languages

  • PHP 97.4%
  • Shell 2.6%