RSocket y AsyncAPI
Primero, explica el método básico de uso directo del punto de entrada /rsocket. El flujo para generar tipos de ruta/petición/respuesta y funciones de servicio en AsyncAPI es el siguiente método de integración de proyecto opcional.
Uso básico del adaptador RSocket.
Solo se instalan paquetes peer en proyectos que utilizan RSocket.
El uso básico no requiere AsyncAPI generator ni WebFlux. Importa createRSocketApi desde /rsocket y pasa el endpoint de WebSocket, y solo si es necesario, pasa el JWT como segundo argumento. mono o stream se devuelve como un Observable de RxJS.
Opcional: Integración de proyecto para la generación automática de servicios AsyncAPI.
Flujo casi idéntico a REST
REST es swagger.jsonutiliza, y RSocket utilizaasyncapi-rsocket.jsonSe leen las rutas, tipos de interacción, y esquemas de solicitud y respuesta del documento para generar tipos de TypeScript y funciones de servicio.
1. Primero: verifica qué es rsocketCommonService con el código completo.
rsocketCommonService.ts tampoco es un archivo generado automáticamente por la biblioteca. Envuelve createRSocketApi directamente en el proyecto para centralizar la conexión/política de reutilización de JWT, y hace que el servicio RSocket generado solo importe callRSocketMono/callRSocketStream. A continuación se muestra el código completo de ese archivo. Lee el Authorization del headerStore del servicio REST público, y si no está presente, llama una vez a la API de token para preparar el JWT, y si el JWT cambia, cierra la conexión RSocket existente y crea una nueva conexión.
rsocketCommonService.ts
tsDespués de copiar, modifica la ruta de importación de headerStore, la ubicación de AsyncApiTypes, la ruta de la API de token, NEXT_PUBLIC_RSOCKET_URL y el endpoint RSocket real según el proyecto.
2. Roles según la estructura del código de rsocketCommonService.
getRSocketUrl
En el servidor, se utilizan variables de entorno y en el navegador se crea una URL ws o wss basada en el protocolo y host actuales.
fetchAuthorization
Cuando no hay JWT en headerStore, se llama a la API de token incluyendo la cookie de sesión y se leen los valores de los campos token, accessToken o jwt.
getRsoketApi
Comparte la promesa de consulta de token incluso si llegan múltiples solicitudes al mismo tiempo, reutiliza la conexión existente para el mismo JWT y crea una nueva conexión si el JWT cambia.
resetRsoketApi
Al cerrar sesión o eliminar credenciales, cierra la conexión RSocket actual y reinicia el JWT y el cliente almacenados.
callRSocketMono / callRSocketStream
Verifica la solicitud y respuesta con el tipo de ruta generado, y combina la promesa de preparación de conexión en el flujo Observable de RxJS para ejecutar mono o stream.
3. Creación de servicio AsyncAPI.
generateAsyncApiRSocket.cjs
js4. Llamada a la función generada.
A continuación se presenta un ejemplo común de requestStream que recibe el progreso del manejo de múltiples tareas. La cadena de ruta y el tipo de evento están incluidos en el servicio generado.
BatchJobPage.tsx
tsxSi la interacción de AsyncAPI es
la función generada es requestResponsela,callRSocketStreamsi es requestStreamse utiliza. 3. Llamar a la función generadaEn la pantalla, ambos son Observable, pero el stream puede ser llamado varias veces. nextpuede ser llamado.