当前位置: 首页 > 知识库问答 >
问题:

Spring中的服务器发送事件客户端示例

瞿和硕
2023-03-14

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

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

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

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

向我们的服务器发送HTTP GET请求
获取-

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

共有1个答案

公冶嘉
2023-03-14

看看Spring RestTemplate的一个执行方法。它们都以响应采集器(ResponseExtractor)作为参数。这个回调接口定义了一个方法:提取数据(ClientHttpResponse响应)。通过提供您自己的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;
        });
 类似资料:
  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 如果我正确理解了服务器发送事件的原则,那么每次客户端注册到EventSource时,它实际上会打开一个到管理事件的资源的新HTTP连接。与其他HTTP请求相反,连接保持活动状态,因此专用于此客户端的服务器进程/线程将一直运行,直到客户端断开连接。 如果我们有1000个客户端使用SSE连接到一个应用程序,该怎么办?我们是否会有1000个进程/线程(做同样的事情)并发运行以处理SSE?我想我错了,但如

  • 为什么每个站点都解释说在SSE中,客户端和服务器之间的单个连接保持打开状态“使用SSE,客户端发送标准HTTP请求请求事件流,服务器最初以标准HTTP响应响应并保持连接打开” 然后,当服务器决定可以向客户端发送数据,而我试图实现SSE时,每隔几秒钟就会看到fiddler请求被发送 对我来说,这感觉就像是长时间的投票,没有一个连接保持打开。 此外,并不是服务器决定向客户机发送数据,而是只有在客户机发

  • 我有一个使用SSE向附加客户端发送更新的node.js服务器。偶尔,我会收到服务器错误H27。与此同时,其他客户端请求可能会在客户端重新注册到SSE事件服务时丢失。 客户端获取/事件请求与服务器H27错误之间的时间介于13秒到19:35分钟之间(在遇到的30次不同事件中)。但GET/事件请求的定时与相应的H27错误之间存在完全的相关性。我每50秒从服务器发送一条keep-alive消息,以绕过He

  • 我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢