从服务器端通知客户端的最佳做法?

Best practice to notify client from serverside?

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

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

有没有办法/最佳实践send/push 数据从服务器到客户端而不是相反的方式以及单向(服务器 -> 客户端)..

提前致谢。

Is there a way / best practice to send/push data from the server to the client rather than the other way around as well as being unidirectional (server -> client)..

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

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

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

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