adapt to review
This commit is contained in:
parent
e5f6fbbc73
commit
d462c5dce5
3 changed files with 18 additions and 17 deletions
|
@ -33,17 +33,6 @@ App::get('/v1/health/version')
|
|||
$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')
|
||||
->desc('Get DB')
|
||||
->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) {
|
||||
Console::info("Connection open (user: {$request->fd}, connections: {}, worker: {$server->getWorkerId()})");
|
||||
|
||||
$app = new App('');
|
||||
$connection = $request->fd;
|
||||
$request = new SwooleRequest($request);
|
||||
|
||||
Console::info("Connection open (user: {$connection}, worker: {$server->getWorkerId()})");
|
||||
|
||||
App::setResource('request', function () use ($request) {
|
||||
return $request;
|
||||
});
|
||||
|
@ -152,8 +152,10 @@ $server->on('open', function (Server $server, Request $request) use (&$connectio
|
|||
|
||||
/*
|
||||
* 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');
|
||||
});
|
||||
$timeLimit
|
||||
|
@ -209,9 +211,9 @@ $server->on('message', function (Server $server, Frame $frame) {
|
|||
$server->close($frame->fd);
|
||||
});
|
||||
|
||||
$server->on('close', function (Server $server, int $fd) use (&$connections, &$subscriptions) {
|
||||
Realtime::unsubscribe($fd, $subscriptions, $connections);
|
||||
Console::info('Connection close: ' . $fd);
|
||||
$server->on('close', function (Server $server, int $connection) use (&$connections, &$subscriptions) {
|
||||
Realtime::unsubscribe($connection, $subscriptions, $connections);
|
||||
Console::info('Connection close: ' . $connection);
|
||||
});
|
||||
|
||||
$server->start();
|
||||
|
|
|
@ -87,6 +87,16 @@ class Realtime
|
|||
/**
|
||||
* 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 $connections
|
||||
* @param array $subscriptions
|
||||
|
|
Loading…
Reference in a new issue