2017-03-29 82 views
1

我們的團隊爲特定任務開發了服務器發送事件(SSE)。春季服務器發送事件客戶端示例

我想建立一個客戶端來聽我們的服務器的事件流。 我有種設法使用澤西庫的Java來做到這一點。 但是,由於我們大多數客戶端代碼都使用Spring,我想要舉一個例子來說明如何使用Spring來完成。

我在Spring的服務器端找到了許多SSE的例子。但是我無法找到客戶端的任何文檔。

Spring是否支持客戶端的SSE? 如果是的話,我可能已經瞭解了以下可以使用Spring實現一個例子...

發送一個HTTP GET請求到我們的服務器...
GET - >http://example.com/api/events/
頭 - >
接受:文本/事件流
sessionKey:someString

響應將是一個文本流,客戶端將繼續接收,直到客戶端選擇關閉連接。

+0

幾乎所有的例子都是客戶端(基於瀏覽器),只有服務器端的實現是Spring。我一直在尋找一個基於Spring的客戶端。 –

回答

1

查看一下Spring RestTemplate的執行方法。他們都以ResponseExtractor作爲參數。這個回調接口定義了一個方法:extractData(ClientHttpResponse response)。通過提供您自己的ResponseExtractor,您可以按照您的要求進行響應,例如逐行讀取。天真的例子:

restTemplate.execute(a_url, HttpMethod.GET, request -> { 
     }, response -> { 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody())); 
      String line; 
      try { 
       while ((line = bufferedReader.readLine()) != null) { 
        System.out.println("Got some data, let's use my ObjectMapper to parse into something useful!"); 
       } 
      } catch (IOException e) { 
       //Something clever 
      } 
      return response; 
     }); 
相關問題