Події життєвого циклу

Остання зміна 2024/07/11 12:22 автором Ashterix

Події буди додані в JsonRpcBundle з версії 7.0.
Відтепер компоненти життєвого циклу RPC серверу працюють через події і ви маєте можливість на них підписатися, щоб зробити його роботу більш гнучкою.

Використання подій потребує від вас певних знань і вмінь, певні ваші дії під час підписки на події можуть призвести до неочікуваних результатів, тому ви використовуєте події на свій страх і ризик

Перелік подій

RPC сервер під час свого життєвого циклу використовує власні події, що базуються на Symfony Event

 Подія  Опис  

 rpc.request 

class RpcRequestEvent

Відбувається при отриманні RPC запиту. Використовуйте цю подію для перевірки або модифікації запиту перед його обробкою. 

 

 rpc.pre_execute 

class RpcPreExecuteEvent

Відбувається перед виконанням RPC методу. Використовуйте цю подію для підготовки або модифікації викликів перед їх виконанням. 

 

 rpc.post_execute 

class RpcPostExecuteEvent
Відбувається після виконання RPC методу. Ви можете використовувати цю подію для обробки результатів або виконання дій після завершення виклику методу.  

 rpc.response 

class RpcResponseEvent
Відбувається перед відправкою RPC відповіді. Використовуйте цю подію для перевірки або модифікації відповідей перед їх відправкою клієнту.  

 rpc.error 

class RpcErrorEvent
Відбувається при виникненні помилки під час обробки RPC запиту. Ви можете використовувати її для обробки помилок або виконання дій у випадку помилки.  

 rpc.async_request 

class RpcAsyncRequestEvent
Відбувається при отриманні асинхронного RPC запиту. Використовуйте її для обробки або модифікації асинхронних запитів перед їх виконанням.  

 rpc.async_output 

class RpcAsyncOutputEvent
Відбувається при відправці асинхронної відповіді. Ви можете використовувати її для перевірки або модифікації асинхронних відповідей перед їх відправкою.  

Підписка на події за допомогою Symfony лістенерів

Для підписки на ці події, ви можете створити Symfony лістенери. Приклад базового лістенера виглядає наступним чином:

Приклад власного підписника на події
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php

namespace App\EventListener;

use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
use Ufo\JsonRpcBundle\Event\RpcRequestEvent;
use Ufo\JsonRpcBundle\Event\RpcEvent;

#[AsEventListener(event: RpcEvent::REQUEST, method: 'onRpcRequest')]
class RpcEventListener
{
   public function onRpcRequest(RpcRequestEvent $event): void
    {
       // your own event handler
   }
}

Після створення лістенера, він автоматично зареєструється завдяки атрибутам. Для більш детальної інформації дивіться документацію Symfony щодо подій: Symfony Event System

Це дозволить вашому лістенеру підписуватися на події і виконувати відповідні дії під час життєвого циклу RPC сервера.