【发布时间】:2021-12-13 15:32:58
【问题描述】:
我正在使用 spring-boot-starter-webflux 2.5.6 和 com.graphql-java-kickstart:graphql-spring-boot-starter:12.0.0 构建一个 graphql 应用程序。 此时应用程序运行良好,因为 com.graphql-java-kickstart 很容易上手。 使用 http-Requests,我可以调用 Queries 并运行 Mutations,甚至可以通过 Websockets 上的 Subscriptions 创建和获取更新。
但对于我的应用程序,查询和突变也必须通过 websocket 运行。
似乎在 com.graphql-java-kickstart:graphql-spring-boot-starter 中您只能将订阅端点配置为 websocket。 通过 'extends Endpoint' 和 '@ServerEndpoint' 添加一个额外的 websocket 什么也没做。
我也尝试添加自己的HandlerMapping:
@PostConstruct
public void init()
{
Map<String, Object> map = new HashMap<String, Object>(
((SimpleUrlHandlerMapping) webSocketHandlerMapping).getUrlMap());
map.put("/mysocket", myWebSocketHandler);
//map.put("/graphql", myWebSocketHandler);
((SimpleUrlHandlerMapping) webSocketHandlerMapping).setUrlMap(map);
((SimpleUrlHandlerMapping) webSocketHandlerMapping).initApplicationContext();
}
这似乎适用于 /mysocket 主题,但如何为 /graphql 启用它,似乎已经有一个处理程序正在监听:
WARN 12168 --- [ctor-http-nio-2] notprivacysafe.graphql.GraphQL : Query failed to parse : ''
以及如何将 websocket 与我的 GraphQLMutationResolvers 连接起来?
【问题讨论】:
标签: java spring-boot websocket graphql