Skip to content

ThrusterIO/http-server

Repository files navigation

HttpServer Component

[Latest Version] (https://github.com/ThrusterIO/http-server/releases) [Software License] (LICENSE) [Build Status] (https://travis-ci.org/ThrusterIO/http-server) [Code Coverage] (https://scrutinizer-ci.com/g/ThrusterIO/http-server) [Quality Score] (https://scrutinizer-ci.com/g/ThrusterIO/http-server) [Total Downloads] (https://packagist.org/packages/thruster/http-server)

[Email] (mailto:team@thruster.io)

The Thruster HttpServer Component.

Install

Via Composer

$ composer require thruster/http-server

Usage

HTTP Server accepts Thruster Socket Server, ServerApplicationInteface implementing object and EventLoop

use GuzzleHttp\Psr7\Response;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Thruster\Component\EventLoop\EventLoop;
use Thruster\Component\Socket\Server;
use Thruster\Component\HttpServer\HttpServer;
use Thruster\Component\ServerApplication\SynchronousServerApplication;


$application = new class extends SynchronousServerApplication {
    /**
     * {@inheritDoc}
     */
    public function processRequestSynchronously(ServerRequestInterface $request) : ResponseInterface
    {
        $response = new Response(200);
        $response->getBody()->write('Hello World!');

        return $response;
    }

    public function preloadApplication()
    {
    }
};

$loop   = new EventLoop();
$socket = new Server($loop);

$httpServer = HttpServer::create($application)
    ->attachTo($socket)
    ->enableDebug();

$socket->listen(1337, '0.0.0.0');

$loop->run();

Benchmark results

Server Software:
Server Hostname:        127.0.0.1
Server Port:            1337

Document Path:          /
Document Length:        22 bytes

Concurrency Level:      10
Time taken for tests:   2.148 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      1340000 bytes
HTML transferred:       220000 bytes
Requests per second:    4655.03 [#/sec] (mean)
Time per request:       2.148 [ms] (mean)
Time per request:       0.215 [ms] (mean, across all concurrent requests)
Transfer rate:          609.15 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:     1    2   0.9      2      11
Waiting:        1    2   0.9      2      11
Total:          1    2   0.9      2      11

Percentage of the requests served within a certain time (ms)
  50%      2
  66%      2
  75%      2
  80%      2
  90%      3
  95%      3
  98%      5
  99%      7
 100%     11 (longest request)

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

License

Please see License File for more information.

About

Thruster HttpServer Component

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages