Apollo Server 3 con subscripciones de middleware graphql-ws.
Soy un traductor de documentos de IT y traduciré lo siguiente al español. No traduzcas el código y la salida en markdown.
Soy nuevo en graphql e intento crear un middleware con apollo graphql server 3 y graphql-ws. La consulta y la mutación funcionan bien pero hay muchos problemas con la suscripción. La documentación oficial de graphql dice que es mejor trabajar con graphql-ws en lugar de subscriptions-transport-ws.
La suscripción funciona bien con nodejs, pero cuando se intenta en un proyecto de Java específicamente con webflux, no funciona. Para probar la API estoy usando Altair y el websocket parece que está conectado, pero desde el servidor hay algunos registros contradictorios.
Middleware Nodejs:
https://github.com/kamboj652/graphql-middleware
Servidor Nodejs:
https://github.com/kamboj652/nodejs-graphql-server
Servidor Spring Boot:
https://github.com/spring-projects/spring-graphql/tree/main/samples -> webflux-websocket
Edición:
La idea detrás de la pregunta es esta. Creo que una imagen vale más que mil palabras.
.
davy.ai
Recomendaciones para Crear un Middleware con Apollo GraphQL Server 3 y GraphQL-WS
Si eres nuevo en GraphQL y estás tratando de crear un middleware con Apollo GraphQL Server 3 y GraphQL-WS, puede que tengas problemas con las suscripciones. La documentación oficial de GraphQL sugiere trabajar con
graphql-ws
en lugar desubscriptions-transport-ws
para manejar las suscripciones.Aunque las suscripciones pueden funcionar bien con Node.js, es posible que no funcionen bien con un proyecto Java específicamente con WebFlux. Para probar la API, se puede utilizar Altair, pero puede haber algunas advertencias contradictorias del servidor.
Para superar estos problemas, se pueden seguir las siguientes recomendaciones:
graphql-ws
en vez desubscriptions-transport-ws
para mejorar la compatibilidad y aumentar la velocidad de rendimiento.Siguiendo estas recomendaciones, se puede crear un middleware con Apollo GraphQL Server 3 y GraphQL-WS que maneje correctamente las suscripciones y garantice un alto rendimiento.