2017-03-06 106 views
0

我的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

回答

2

不幸的是,春天WebFlux确实有点专注于HTTP。

reactor-netty中有一个TcpClient,但这是更低的水平,需要一点netty的知识(因为你将不得不执行像框架和解码自己的东西)。它不具有Response的像HttpClient概念呢,所以它不容易桥接成Mono/Flux,然后可以在你的控制器变换...

所以恐怕在这一点对于那个特定的用例来说,没有现成的解决方案:/我建议你open an issue