有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Spring中的java ServerSent事件客户端示例

我们的团队为特定任务开发了服务器发送事件(SSE)

我正在尝试构建一个客户端来侦听来自服务器的事件流。 我已经设法使用Jersey Java库实现了这一点。 然而,由于我们的大多数客户机代码都使用Spring,所以我想举一个例子来说明如何使用Spring实现这一点

我能够在Spring的服务器端找到许多关于SSE的示例。但是,我无法找到客户端的任何文档

Spring在客户端支持SSE吗? 如果是,我可以举一个例子说明如何使用Spring实现以下功能

向我们的服务器发送HTTP GET请求
获取->http://example.com/api/events/
标题->
接受:文本/事件流
sessionKey:someString

响应将是一个文本流,客户端将继续接收该文本流,直到客户端选择关闭连接


共 (1) 个答案

  1. # 1 楼答案

    看看SpringRESTTemplate的一个执行方法。它们都以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;
            });