Spring中的Server-Sent Event客户端示例

6
我们的团队针对特定任务开发了服务器发送事件(SSE)。 我正在尝试构建一个客户端来监听来自服务器的事件流。 我使用Java中的Jersey库已经做到了这一点。 但是,由于我们的大部分客户端代码都使用Spring,因此我希望有一个使用Spring实现的示例。 我能找到许多关于Spring服务器端SSE的示例。然而,我没有找到任何关于客户端的文档。 Spring是否支持客户端的SSE? 如果是,我可以用Spring如何实现以下操作的示例... 向我们的服务器发送HTTP GET请求...
GET -> http://example.com/api/events/
headers ->
Accept:text/event-stream
sessionKey:someString 响应将是一个文本流,客户端将继续接收,直到客户端选择关闭连接。

2
几乎所有的示例都是客户端(基于浏览器)的,只有服务器端实现是Spring。我一直在寻找一个基于Spring的客户端。 - Web User
1个回答

10

请看Spring RestTemplate的其中一个execute方法。它们都将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;
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接