从RestController中的TCP服务器获取响应
问题描述:
我的Spring webflux控制器需要访问远程TCP服务器。我怎样才能将来自TCP服务器的响应流式传输到客户端?从RestController中的TCP服务器获取响应
喜欢的东西:
WebClient client = WebClient.create("http://example.com");
....
@GetMapping(value = "/account")
public Mono<String> account() {
Mono<Account> account = client.get()
.url("/accounts/{id}", 1L)
.accept(APPLICATION_JSON)
.exchange(request)
.then(response -> response.bodyToMono(Account.class));
return account;
}
但用的TcpClient(不是Web客户端)。
感谢,
--nick
答
不幸的是,春天WebFlux
确实有点专注于HTTP。
reactor-netty中有一个TcpClient
,但这是更低的水平,需要一点netty
的知识(因为你将不得不执行像框架和解码自己的东西)。它不具有Response
的像HttpClient
概念呢,所以它不容易桥接成Mono
/Flux
,然后可以在你的控制器变换...
所以恐怕在这一点对于那个特定的用例来说,没有现成的解决方案:/我建议你open an issue。