Skip to content

Commit 91dbe51

Browse files
Koldo Picazakpicaza
authored andcommitted
add configurable server
1 parent bde217d commit 91dbe51

File tree

3 files changed

+23
-46
lines changed

3 files changed

+23
-46
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,20 @@ Open your browser on port `8080`
2222

2323
## Config
2424

25+
### Server Config
26+
27+
Default config
28+
29+
```yaml
30+
parameters:
31+
server:
32+
host: '0.0.0.0'
33+
port: '8080'
34+
max_concurrency: 100
35+
buffer_size: 4194304
36+
37+
```
38+
2539
### Development Mode
2640

2741
To run it in dev mode you can run `config:development-mode` command

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"require": {
1818
"php": "^7.4|^8.0",
1919
"ext-json": "*",
20-
"antidot-fw/react-framework": "^1.0.0",
20+
"antidot-fw/react-framework": "^1.0.3",
2121
"antidot-fw/fast-router-adapter": "^0.1.0",
2222
"antidot-fw/cli": "^1.1.0",
2323
"antidot-fw/container": "^0.1.0",

public/index.php

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,65 +4,28 @@
44
declare(strict_types=1);
55

66
use Antidot\Application\Http\Application;
7-
use Antidot\React\PromiseResponse;
8-
use Laminas\Diactoros\Response\HtmlResponse;
9-
use Psr\Http\Message\ServerRequestInterface;
10-
use Ramsey\Uuid\Uuid;
11-
use React\EventLoop\Factory;
12-
use React\Http\Middleware\LimitConcurrentRequestsMiddleware;
13-
use React\Http\Middleware\RequestBodyBufferMiddleware;
14-
use React\Http\Middleware\RequestBodyParserMiddleware;
15-
use React\Http\Middleware\StreamingRequestMiddleware;
7+
use Psr\Log\LoggerInterface;
8+
use React\EventLoop\LoopInterface;
169
use React\Http\Server;
1710
use React\Socket\Server as Socket;
18-
use function React\Promise\resolve;
1911

2012
require 'vendor/autoload.php';
2113

2214
call_user_func(static function () {
23-
$loop = Factory::create();
2415
$container = require 'config/container.php';
2516
$application = $container->get(Application::class);
2617
(require 'router/middleware.php')($application, $container);
2718
(require 'router/routes.php')($application, $container);
2819

29-
$server = new Server(
30-
$loop,
31-
new StreamingRequestMiddleware(),
32-
new LimitConcurrentRequestsMiddleware(100), // 100 concurrent buffering handlers
33-
new RequestBodyBufferMiddleware(4 * 1024 * 1024), // 4 MiB
34-
new RequestBodyParserMiddleware(),
35-
static function (ServerRequestInterface $request) use ($application) {
36-
try {
37-
$response = new PromiseResponse(
38-
resolve($request)
39-
->then(static fn ($request) => $request->withAttribute('request_id', Uuid::uuid4()->toString()))
40-
->then(static fn ($request) => $application->handle($request))
41-
);
42-
} catch (Throwable $exception) {
43-
if (!empty($e = $exception->getPrevious())) {
44-
$exception = $e;
45-
}
20+
$loop = $container->get(LoopInterface::class);
4621

47-
$response = new HtmlResponse(
48-
sprintf(
49-
'%s in file %s in line %s.',
50-
$exception->getMessage(),
51-
$exception->getFile(),
52-
$exception->getLine()
53-
)
54-
);
55-
}
56-
57-
return resolve($response);
58-
}
59-
);
60-
61-
$server->on('error', function ($err) {
62-
dump($err);
22+
$server = $container->get(Server::class);
23+
$server->on('error', static function ($err) use ($container) {
24+
$logger = $container->get(LoggerInterface::class);
25+
$logger->critical($err);
6326
});
6427

65-
$socket = new Socket('0.0.0.0:8080', $loop);
28+
$socket = $container->get(Socket::class);
6629
$server->listen($socket);
6730

6831
$loop->run();

0 commit comments

Comments
 (0)