Code Monkey home page Code Monkey logo

socket-client's Introduction

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 our contributing guide.

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.

socket-client's People

Contributors

ajgarlag avatar joelwurtz avatar sagikazarmark avatar xabbuh avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.