【问题标题】:Best practice to notify client from serverside?从服务器端通知客户端的最佳实践?
【发布时间】:2020-11-11 09:22:02
【问题描述】:

在我目前的情况下,前端客户端每隔 15 秒对后端端点 (java) 进行一次 api 调用,以查看资源是否存在。资源将通过一些业务逻辑创建。一旦资源存在,客户端就会从 api 获取数据并进行处理。

但是,每 15 秒调用一次 api 似乎是一种代价高昂的性能并且不可扩展。我想知道这方面的最佳实践 - 客户端等待资源存在以执行某些逻辑。

有没有一种方法/最佳实践将数据从服务器发送/推送到客户端,而不是相反以及单向(服务器 -> 客户端)..

提前谢谢你。

【问题讨论】:

标签: java web-applications server client client-server


【解决方案1】:

有没有一种方法/最佳实践将数据从服务器发送/推送到客户端,而不是相反以及单向(服务器 -> 客户端)..

您刚才在此处描述的内容称为observer pattern。它的整个想法是让观察者列表附加到可观察对象,并在每次可观察对象的状态发生变化时推送通知。

您可以通过公开订阅端点来在 Java 后端实现此模式,在该端点中您可以指定要观察的内容,以及在发生状态更改时要回调的 URI 或其他一些机制推送服务器通知。但是,如果您想避免定期 API 查询,您可能必须解决另一个问题,即让您的“客户端”永久或临时充当这些通知的服务器。

显然,您希望有一个“取消订阅”端点来释放资源。您可能需要考虑如果客户端意外断开连接或由于其他原因没有参与(订阅的生存时间在这里听起来是个好主意),该怎么办。

【讨论】:

    【解决方案2】:

    为了正确解决这个问题,您需要实现 WebSocket。 来自客户端的请求将是一个 GET,服务器将使用 200 状态码确认它。 然后,当服务器完成处理您的请求时,它将通过 websocket 将数据直接广播到您的 Web 应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2012-05-24
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多