【问题标题】:Server-Sent Event Client example in SpringSpring中的服务器发送事件客户端示例
【发布时间】:2017-08-22 06:42:08
【问题描述】:

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

我正在尝试构建一个客户端来监听来自我们服务器的事件流。 我已经设法使用 Java 的 Jersey 库来做到这一点。 但是,由于我们的大多数客户端代码都使用 Spring,所以我想举一个例子来说明如何使用 Spring 来完成。

我能够在 Spring 服务器端的 SSE 上找到许多示例。但是我找不到客户端的任何文档。

Spring 是否在客户端支持 SSE? 如果是的话,我可以举一个例子来说明如何使用 Spring 实现以下目标......

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

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

【问题讨论】:

  • 几乎所有示例都是客户端(基于浏览器),只有服务器端实现是 Spring。我也一直在寻找基于 Spring 的客户端。

标签: java spring server-sent-events


【解决方案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;
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多