简单Spring GraphQL订阅返回错误

ej83mcc0  于 2023-02-03  发布在  Spring
关注(0)|答案(1)|浏览(194)

我正在尝试创建一个简单的Spring GraphQL订阅处理程序。

@Controller
public class GreetingController {
    @QueryMapping
    String sayHello() {
        return "Hello!";
    }

    @SubscriptionMapping
    Flux<String> greeting(@Argument int count) {
        return Flux.fromStream(Stream.generate(() -> "Hello @ " + Instant.now()))
                .delayElements(Duration.ofSeconds(1))
                .take(count);
    }
}

下面是GraphQL模式:

type Query {
    sayHello: String
}

type Subscription {
    greeting(count: Int): String
}

Spring配置:

spring:
    graphql:
        graphiql:
            enabled: true
            path: /graphiql

当我尝试使用spring托管的graphiql运行上述订阅时,收到以下错误:

{
  "errors": [
    {
      "isTrusted": true
    }
  ]
}

当我使用Postman运行相同的graphql请求时,我收到以下响应:

{
    "data": {
        "upstreamPublisher": {
            "scanAvailable": true,
            "prefetch": -1
        }
    }
}

是什么原因导致订阅不从我的控制器返回数据?

zkure5ic

zkure5ic1#

正如链接的GitHub问题中所解释的,订阅需要在持久传输连接中传输数据的能力--这是其他普通HTTP所不能提供的。
首先你需要在你的应用中启用WebSocket支持,GraphiQL UI应该透明地使用WebSocket传输。

相关问题