venndev/vosaka-http

The library handles http requests from vosaka.

Maintainers

Package info

github.com/vosaka-php/vosaka-http

pkg:composer/venndev/vosaka-http

Statistics

Installs: 24

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 0

1.1.9 2026-03-22 07:13 UTC

README

Asynchronous HTTP library for PHP with PSR-7 messages, router, middleware, HTTP client, and HTTP server.

Features

  • Async HTTP client (Browzr)
  • Async HTTP server (HttpServer)
  • PSR-7 message implementation
  • Router with path params
  • Middleware stack (CORS, favicon, custom middleware)
  • Strict types, PHP 8+

Installation

composer require venndev/vosaka-http

HTTP Server (Current Flow)

HttpServer now runs this pipeline:

socket -> read -> string buffer -> HTTP parser -> handler -> response builder -> string -> socket write

This is implemented in:

Quick Start (Server)

<?php

declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use Psr\Http\Message\ServerRequestInterface;
use vosaka\http\message\Response;
use vosaka\http\middleware\CorsMiddleware;
use vosaka\http\router\Router;
use vosaka\http\server\HttpServer;
use vosaka\foroutines\AsyncMain;

#[AsyncMain]
function main() {
    $router = Router::new()
        ->get('/health', function (ServerRequestInterface $req) {
            return Response::json([
                'status' => 'ok',
                'time' => date('c'),
            ]);
        });

    $server = HttpServer::new($router)
        ->withDebugMode(true)
        ->layer(CorsMiddleware::permissive());

    $server->serve('0.0.0.0:8888');
}

Quick Start (Client)

<?php

declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use vosaka\http\Browzr;

$response = Browzr::get('https://httpbin.org/get')->await();
echo $response->getStatusCode() . PHP_EOL;

Local Test

php tests/server.php

Benchmark

OS: Linux 5.4.0-1026-aws #1 SMP Debian 5.4.19-1~deb10u1 (2026-03-13)

PHP > wrk -t12 -c10000 -d30s http://127.0.0.1:8888
Running 30s test @ http://127.0.0.1:8888
  12 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   416.48ms   38.54ms 742.26ms   95.75%
    Req/Sec     2.00k   719.10     4.31k    68.44%
  714611 requests in 30.08s, 283.51MB read
Requests/sec:  23758.13
Transfer/sec:      9.43MB

NODEJS > wrk -t12 -c10000 -d30s http://127.0.0.1:8888
Running 30s test @ http://127.0.0.1:8888
  12 threads and 10000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    39.46ms   14.92ms   1.98s    99.86%
    Req/Sec     2.87k     1.73k    7.65k    60.89%
  1027131 requests in 30.08s, 673.93MB read
  Socket errors: connect 0, read 509, write 0, timeout 719
Requests/sec:  34147.09
Transfer/sec:     22.40MB