为什么webflux客户端会提供404?

时间:2018-03-09 01:06:21

标签: reactive-programming spring-webflux

我正在尝试将webflux客户端连接到远程websocket。有一个示例websocket位于https://www.websocket.org/echo.html。我可以通过按“连接”让我的浏览器在那里发出一个wss请求。在我的浏览器开发人员工具栏中,我可以看到成功请求wss://echo.websocket.org/?encoding = text

https://stackify.com/reactive-spring-5/中也提到了此网址(由于未定义“输入”,因此代码无效)。

然而,当我尝试使用webflux从spring boot 2.0.0访问相同的url时,我得到了404:

@PostConstruct
public void run() throws URISyntaxException {
    WebClient webClient = WebClient.create();
    Flux<String> r =
            webClient.get().uri("wss://echo.websocket.org/?encoding=text")
                    .retrieve()
                    .bodyToFlux(String.class)
                    .log();

    r.subscribe(res -> System.out.println("ok: " + res), ex -> System.out.println(ex));
}

错误:

org.springframework.web.reactive.function.client.WebClientResponseException: ClientResponse has erroneous status code: 404 Not Found

我最好的猜测是它以某种方式不适用于以“wss://”开头的网址。我可以更改代码以便请求成功吗?

1 个答案:

答案 0 :(得分:1)

WebClient不是WebSocket客户端,ReactorNettyWebSocketClient(在您链接的文章中提到)是WebSocketClient。请改用它。