yosymfony / httpserver
A simple HTTP server
Installs: 37 852
Dependents: 1
Suggesters: 0
Security: 0
Stars: 19
Watchers: 3
Forks: 3
Open Issues: 1
Requires
- php: >=5.5.5
- react/http: 0.4.*
- symfony/http-foundation: ^2.7|^3.0
- symfony/http-kernel: ^2.7|^3.0
README
HttpServer is a simple HTTP server powerd REACT.
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