The socket client use the stream extension from PHP, which is integrated into the core.
Via Composer
$ composer require php-http/socket-client
- TCP Socket Domain (tcp://hostname:port)
- UNIX Socket Domain (unix:///path/to/socket.sock)
- TLS / SSL Encyrption
- Client Certificate (only for php > 5.6)
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.
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.
First launch the http server:
$ ./vendor/bin/http_test_server > /dev/null 2>&1 &
Then the test suite:
$ composer test
Please see CONTRIBUTING and CONDUCT for details.
If you discover any security related issues, please contact us at [email protected].
The MIT License (MIT). Please see License File for more information.