adapt to review
This commit is contained in:
parent
e5f6fbbc73
commit
d462c5dce5
|
@ -33,17 +33,6 @@ App::get('/v1/health/version')
|
||||||
$response->json(['version' => APP_VERSION_STABLE]);
|
$response->json(['version' => APP_VERSION_STABLE]);
|
||||||
});
|
});
|
||||||
|
|
||||||
App::get('/v1/health/realtime')
|
|
||||||
->desc('Get Realtime')
|
|
||||||
->groups(['api', 'health'])
|
|
||||||
->label('scope', 'public')
|
|
||||||
->inject('response')
|
|
||||||
->action(function ($response) {
|
|
||||||
/** @var Utopia\Response $response */
|
|
||||||
// TODO: realtime health
|
|
||||||
$response->json(['status' => 'OK']);
|
|
||||||
});
|
|
||||||
|
|
||||||
App::get('/v1/health/db')
|
App::get('/v1/health/db')
|
||||||
->desc('Get DB')
|
->desc('Get DB')
|
||||||
->groups(['api', 'health'])
|
->groups(['api', 'health'])
|
||||||
|
|
|
@ -119,12 +119,12 @@ $server->on('start', function (Server $server) {
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->on('open', function (Server $server, Request $request) use (&$connections, &$subscriptions, &$register) {
|
$server->on('open', function (Server $server, Request $request) use (&$connections, &$subscriptions, &$register) {
|
||||||
Console::info("Connection open (user: {$request->fd}, connections: {}, worker: {$server->getWorkerId()})");
|
|
||||||
|
|
||||||
$app = new App('');
|
$app = new App('');
|
||||||
$connection = $request->fd;
|
$connection = $request->fd;
|
||||||
$request = new SwooleRequest($request);
|
$request = new SwooleRequest($request);
|
||||||
|
|
||||||
|
Console::info("Connection open (user: {$connection}, worker: {$server->getWorkerId()})");
|
||||||
|
|
||||||
App::setResource('request', function () use ($request) {
|
App::setResource('request', function () use ($request) {
|
||||||
return $request;
|
return $request;
|
||||||
});
|
});
|
||||||
|
@ -152,8 +152,10 @@ $server->on('open', function (Server $server, Request $request) use (&$connectio
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Abuse Check
|
* Abuse Check
|
||||||
|
*
|
||||||
|
* Abuse limits are connecting 128 times per minute and ip address.
|
||||||
*/
|
*/
|
||||||
$timeLimit = new TimeLimit('url:{url},ip:{ip}', 60, 60, function () use ($register) {
|
$timeLimit = new TimeLimit('url:{url},ip:{ip}', 128, 60, function () use ($register) {
|
||||||
return $register->get('db');
|
return $register->get('db');
|
||||||
});
|
});
|
||||||
$timeLimit
|
$timeLimit
|
||||||
|
@ -209,9 +211,9 @@ $server->on('message', function (Server $server, Frame $frame) {
|
||||||
$server->close($frame->fd);
|
$server->close($frame->fd);
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->on('close', function (Server $server, int $fd) use (&$connections, &$subscriptions) {
|
$server->on('close', function (Server $server, int $connection) use (&$connections, &$subscriptions) {
|
||||||
Realtime::unsubscribe($fd, $subscriptions, $connections);
|
Realtime::unsubscribe($connection, $subscriptions, $connections);
|
||||||
Console::info('Connection close: ' . $fd);
|
Console::info('Connection close: ' . $connection);
|
||||||
});
|
});
|
||||||
|
|
||||||
$server->start();
|
$server->start();
|
||||||
|
|
|
@ -87,6 +87,16 @@ class Realtime
|
||||||
/**
|
/**
|
||||||
* Identifies the receivers of all subscriptions, based on the permissions and event.
|
* Identifies the receivers of all subscriptions, based on the permissions and event.
|
||||||
*
|
*
|
||||||
|
* The processing works in linear time complexity, meaning it will increase in time - the same amount it increases in space.
|
||||||
|
*
|
||||||
|
* Example with a event with user:XXX permissions and with X users spread across 10 different channels:
|
||||||
|
* - 0.014 ms (±6.88%) | 10 Connections / 100 Subscriptions
|
||||||
|
* - 0.070 ms (±3.71%) | 100 Connections / 1,000 Subscriptions
|
||||||
|
* - 0.846 ms (±2.74%) | 1,000 Connections / 10,000 Subscriptions
|
||||||
|
* - 10.866 ms (±1.01%) | 10,000 Connections / 100,000 Subscriptions
|
||||||
|
* - 110.201 ms (±2.32%) | 100,000 Connections / 1,000,000 Subscriptions
|
||||||
|
* - 1,121.328 ms (±0.84%) | 1,000,000 Connections / 10,000,000 Subscriptions
|
||||||
|
*
|
||||||
* @param array $event
|
* @param array $event
|
||||||
* @param array $connections
|
* @param array $connections
|
||||||
* @param array $subscriptions
|
* @param array $subscriptions
|
||||||
|
|
Loading…
Reference in a new issue