A simple HTTP server

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


HttpServer is a simple HTTP server powerd REACT.

Build Status


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);

// 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, '');

The defatult values:

  • port: 8080
  • host:

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';

    ->listen(8081, '')
    ->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' => '',
    '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);

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',
        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