【问题标题】:Project Reactor and Server Side Events项目反应堆和服务器端事件
【发布时间】:2019-10-09 11:37:10
【问题描述】:

我正在寻找一种解决方案,只要在服务器端完成修改,后端就会将事件发布到前端。为了更简洁,我想在修改一个项目后立即发出一个新的对象列表。

我尝试在 SpringBoot 项目上实现,该项目使用 Reactive Web,MongoDB 有一个 @Tailable 游标,一旦修改了上限集合,就会发布一个事件。问题是上限集合有一些限制,并且与我想要做的事情并不真正兼容。问题是,如果新元素的大小不同,我无法更新现有元素(据我了解,这是非法的,因为您无法进行回滚)。

老实说,我什至不知道这是否可行,但也许我很幸运,我会在这里遇到一位火箭科学家,这将证明并非如此。

提前致谢!!

*** 编辑: 很抱歉这个模糊的问题。是的,我更关注如何使用 Spring Reactive 框架。

【问题讨论】:

  • 请尝试组织和改写问题。您正在寻找的具体是什么?问题在于检测何时需要发布事件?还是关于如何从后端发布到前端的问题?

标签: mongodb spring-boot project-reactor reactive


【解决方案1】:

当我有类似的需求时 - 通知前端在后端完成了某事 - 我使用了消息队列。

我已经从后端向队列发布了一条消息,前端消费了这条消息。

但我不确定这是否是您正在寻找的。​​p>

【讨论】:

    【解决方案2】:

    如果您将 webflux 与 spring reactor 一起使用,我认为您可以简单地使用内容类型为“text/event-stream”或“application/stream+json”的客户端请求,并且您将拥有可以生成这些的 API内容类型。这为您提供了 SSE 模型而无需太多努力。

    @GetMapping(value = "/stream", produces = {MediaType.TEXT_EVENT_STREAM_VALUE, MediaType.APPLICATION_STREAM_JSON_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE})
    public Flux<Message> get(HttpServletRequest request) {
    

    【讨论】:

      【解决方案3】:

      只是一个想法——也许你需要在这里使用网络套接字技术:

      前端(我假设它是一个在浏览器中运行的客户端应用程序,用 react、angular 或类似的东西编写)可以与后端服务器建立 web-socket 通信。

      当后端进程完成后,就可以将消息从后端发送到前端了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-19
        • 1970-01-01
        • 2017-12-29
        • 2020-01-15
        • 2017-01-14
        • 2020-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多