2017-03-06 35 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