首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“错误”:“无法连接到websocket端点ws://localhost:8000/订阅。请检查端点url是否正确。”用于graphql spqr

“错误”:“无法连接到websocket端点ws://localhost:8000/订阅。请检查端点url是否正确。”用于graphql spqr
EN

Stack Overflow用户
提问于 2021-08-25 14:04:44
回答 1查看 453关注 0票数 0

我的数据存储在mongodb中,我正在尝试使用graphql和项目反应性来实现订阅。当我试图测试突变和查询时,我会得到响应,但是我会继续获得以下的子代码错误消息:

{“错误”:“无法连接到websocket端点ws://localhost:8080/订阅。请检查端点url是否正确。”}

我在这个问题上做了一些研究,并在上做了一些研究,包括我的依赖项中的“spring starter”并没有解决这个问题,如果我没有使用firefox作为我的游乐场gui浏览器。

我学习了关于如何使用graphql实现订阅的示例,当我试图克隆该项目时,订阅实际上工作得很好。

不能对我和上面的项目的实现有任何不同.这是我的build.gradle文件:

代码语言:javascript
复制
    configurations {

    compile.exclude module: 'spring-boot-starter-tomcat'
    compile.exclude group: 'org.apache.tomcat'

    compileOnly {
        extendsFrom annotationProcessor
    }
}

dependencies {

   
    // https://mvnrepository.com/artifact/de.flapdoodle.embed/de.flapdoodle.embed.mongo
    testImplementation group: 'de.flapdoodle.embed', name: 'de.flapdoodle.embed.mongo', version: '3.0.0'

    // https://mvnrepository.com/artifact/io.leangen.graphql/graphql-spqr-spring-boot-starter
    implementation group: 'io.leangen.graphql', name: 'graphql-spqr-spring-boot-starter', version: '0.0.6'

    implementation group: 'io.leangen.graphql', name: 'spqr', version: io_leangen_graphql_spqr

    // https://mvnrepository.com/artifact/com.graphql-java-kickstart/playground-spring-boot-starter
    implementation group: 'com.graphql-java-kickstart', name: 'playground-spring-boot-starter', version: '11.1.0'

    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-websocket
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-websocket', version: '2.5.4'


    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb-reactive
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-mongodb-reactive', version: '2.5.4'

    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-webflux
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-webflux', version: '2.5.4'

    compileOnly group: 'org.projectlombok', name: 'lombok', version: org_projectlombok_lombok_version
    annotationProcessor group: 'org.projectlombok', name: 'lombok', version: org_projectlombok_lombok_version
}

我在用

代码语言:javascript
复制
compile.exclude module: 'spring-boot-starter-tomcat'
    compile.exclude group: 'org.apache.tomcat'

开始网络而不是猫

下面是我的子项实现:

代码语言:javascript
复制
@Autowired
private ProductRepository productRepository;

private final ConcurrentMultiMap<Double, FluxSink<ProductDto>> subscribers = new ConcurrentMultiMap<>();

@GraphQLQuery
public Flux<ProductDto> getProducts(){
    return productRepository.findAll().map(AppUtils::ProductEntityToDto);
}

@GraphQLSubscription
public Publisher<ProductDto> taskStatusChanged(double price) {
    return Flux.create(subscriber -> subscribers.add(price, subscriber.onDispose(() -> subscribers.remove(price, subscriber))), FluxSink.OverflowStrategy.LATEST);
}

我的代码中有遗漏什么吗?还是受抚养人?或者其他的配置?任何帮助都将不胜感激..。

EN

回答 1

Stack Overflow用户

发布于 2021-10-09 04:56:46

默认情况下,GraphQl SPQR似乎将WebSocket订阅处理端点映射到/graphql,而不是其他GraphQL框架中的通用/subscriptions。

当应用程序启动时,请参阅控制台中的以下信息。

代码语言:javascript
复制
2021-10-09 12:50:02.653 DEBUG 14632 --- [    Test worker] o.s.w.s.s.s.WebSocketHandlerMapping      : Patterns [/graphql] in 'webSocketHandlerMapping'

可以通过在您的graphql.spqr.ws.endpoint中自定义application.properties属性来更改它。

但是它的GraphQL WebSocket订阅实现似乎非常混乱,它不遵循Appllo WebSocket订阅协议或新的graphql-ws规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68924405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档