slovocast/app/server/server.php

37 lines
988 B
PHP
Raw Normal View History

2024-06-20 02:20:42 +00:00
<?php
require_once realpath(__DIR__ . '/../vendor/autoload.php');
2024-06-20 02:20:42 +00:00
use Slovocast\Bootstrap;
use React\Http\HttpServer;
use React\Socket\SocketServer;
use Psr\Http\Message\ServerRequestInterface as Request;
try {
$app = Bootstrap::init();
$http = new HttpServer(fn (Request $request) => $app->handle($request));
$address = "127.0.0.1:8000";
$socket = new SocketServer($address);
$http->on('error', function ($error) use ($socket) {
fprintf(STDERR, $error->getMessage() . "\n");
fprintf(STDERR, "Closing socket connection.\n");
$socket->close();
});
$http->on('exit', function () use ($socket) {
fprintf(STDOUT, "Closing socket connection.\n");
$socket->close();
});
$http->listen($socket);
fprintf(STDOUT, "Server running on %s\n", $address);
} catch (\Exception $e) {
fprintf(STDERR, "Error caught bootstrapping the application\n");
fprintf(STDERR, $e->getMessage() . "\n");
return -1;
}
2024-06-20 02:20:42 +00:00