yosymfony/httpserver

A simple HTTP server

v1.3.0 2017-01-14 18:23 UTC

README

HttpServer is a simple HTTP server powerd REACT.

Build Status

Installation

Use Composer to install Yosyfmony HttpServer package:

Add the following to your composer.json and run composer update.

"require": {
    "yosymfony/httpserver": "1.3.x"
}

More information about the package on Packagist.

How to use?

It's simple. The RequestHandler need a function for managing each connection:

$requestHandler = new RequestHandler(function($request) {
    return 'Hi Yo! Symfony';
});

$server = new HttpServer($requestHandler);
$server->start();

// go to http://localhost:8080

How to configure the RequestHandler?

You can configure port and host for listening requests:

$requestHandler = new RequestHandler( function($request) {
    return 'Hi Yo! Symfony';
});

$requestHandler->listen(8081, '127.0.0.1');

The defatult values:

  • port: 8080
  • host: 0.0.0.0

The handler function

The handler function receives a unique parameter to describe the resquest. By default, this argument is a object type React\Http\Request. If you want to receive a Symfony HttpFoundation Request you need active this mode:

$requestHandler = new RequestHandler( function($request) {
    return 'Hi Yo! Symfony';
});

$requestHandler
    ->listen(8081, '127.0.0.1')
    ->enableHttpFoundationRequest(); // $requestHandler uses fluent interface

In case you want to use a HttpKernelInterface like Symfony, Silex or Laravel, simple use the HttpKernelRequestHandler handler like this:

// Create our kernel.
$httpKernel = new ExampleHttpKernel();
$options = array(
    'host' => '127.0.0.1',
    'port' => 8081,
);

// Wrap it with the RequestHandler.
$handler = new \Yosymfony\HttpServer\HttpKernelRequestHandler($httpKernel, $options);

// Start the server using the RequestHandler.
$server = new \Yosymfony\HttpServer\HttpServer($handler);
$server->start();

The response

The most simple use-case is return a string. By default the Content-Type value is text/plain at the response header:

$requestHandler = new RequestHandler( function($request) {
    return 'Hi Yo! Symfony';
});

If you want customize the status code and the response header you can return a array like this:

requestHandler = new RequestHandler( function($request) {
    return [
        'content' => '<?xml version="1.0" encoding="UTF-8"?><root>Hi Yo! Symfony</root>',
        'headers' => ['Content-Type' => 'text/xml'],
        'status_code' => 200
    ];
});

The best way to make a response is using Response from Symfony HttpFoundation:

use Symfony\Component\HttpFoundation\Response;

requestHandler = new RequestHandler( function($request) {
    return new Response(
        'Hi Yo! Symfony',
        Response::HTTP_OK,
        array('content-type' => 'text/html')
    );
});

Unit tests

You can run the unit tests with the following command:

$ cd your-path/vendor/yosymfony/httpserver
$ composer.phar install --dev
$ phpunit