RSocket & AsyncAPI
Primeiro, explica o método básico de uso do ponto de entrada /rsocket. O fluxo de geração de tipos de route/request/response e funções de serviço no AsyncAPI é a próxima forma opcional de integração do projeto.
Uso básico do adaptador RSocket.
Instale pacotes peer apenas em projetos que utilizam RSocket.
O uso básico não requer AsyncAPI generator ou WebFlux. Importe createRSocketApi de /rsocket e passe o endpoint WebSocket, e apenas se necessário, passe o JWT como segundo argumento. mono ou stream é retornado como um Observable RxJS.
Opcional: Geração automática de serviço AsyncAPI para integração de projeto.
Fluxo quase idêntico ao REST
REST é swagger.jsonusado, e RSocket éasyncapi-rsocket.jsonusado. Leia o documento para gerar tipos TypeScript e funções de serviço a partir da rota, tipo de interação, esquema de requisição e resposta.
1. Primeiro: verifique o que é rsocketCommonService com o código completo.
rsocketCommonService.ts também não é um arquivo gerado automaticamente pela biblioteca. Ele envolve diretamente o createRSocketApi no projeto, centralizando a política de conexão/reuso de JWT, e faz com que o serviço RSocket gerado importe apenas callRSocketMono/callRSocketStream. Abaixo está o código completo desse arquivo. Ele lê a autorização do headerStore do serviço REST público, e se não houver, chama a API de token uma vez para preparar o JWT, e se o JWT mudar, fecha a conexão RSocket existente e cria uma nova.
rsocketCommonService.ts
tsApós a cópia, modifique o caminho de importação do headerStore, a localização do AsyncApiTypes, o caminho da API de token, NEXT_PUBLIC_RSOCKET_URL e o endpoint RSocket real de acordo com o projeto.
2. Funções do código do rsocketCommonService.
getRSocketUrl
No servidor, usa variáveis de ambiente e, no navegador, cria URLs ws ou wss com base no protocolo e host atuais.
fetchAuthorization
Quando não há JWT no headerStore, chama a API de token incluindo o cookie de sessão e lê os valores dos campos token, accessToken ou jwt.
getRsoketApi
Mesmo com várias solicitações simultâneas, compartilha a Promise de consulta do token e reutiliza a conexão existente para o mesmo JWT, criando uma nova conexão se o JWT mudar.
resetRsoketApi
Ao fazer logout ou remover informações de autenticação, fecha a conexão RSocket atual e inicializa o JWT e o cliente armazenados.
callRSocketMono / callRSocketStream
Verifica a solicitação e a resposta com o tipo de rota gerado e combina a Promise de preparação da conexão ao fluxo Observable RxJS para executar mono ou stream.
3. Criação de serviço AsyncAPI.
generateAsyncApiRSocket.cjs
js4. Chamada da função gerada.
a seguir é um exemplo comum de requestStream que recebe o progresso do tratamento de várias tarefas. A string de rota e o tipo de evento estão dentro do serviço gerado.
BatchJobPage.tsx
tsxEscolha entre mono e stream
Se a interação AsyncAPI for requestResponsea função gerada serácallRSocketMonose, requestStreamse não, callRSocketStreamusará. Na tela, ambos são Observables, mas o stream pode ser chamado várias vezes. next.