让客户端监听服务器

Make client listen to server

如何实现一种机制,使我可以将数据从服务器发送到客户端?

我实现了一个 java 应用程序,其中客户端以特定频率在服务器中侦听 URL(服务器端使用 PHP 实现)。 每 X 次客户端打开连接并检查从服务器返回的 json 是否有更新。

我认为这不是一个好的约定,因为在这种方法中,客户端不断向服务器发送 HTTP 请求,因此服务器有太多的连接 - 超过 90% 的这些请求没有得到服务器的响应。

我的目标是减少从客户端到服务器的请求,所以我试图实现同样的事情,但是在 REVERSE 顺序上:每次服务器上有更新(服务器有一条给客户端的消息)它把它发送给客户端——客户端必须定期监听服务器的消息。

如何实现这样的机制?

有效吗?

如果没有,解决我的问题的最佳方法是什么?

我也在 Java 中实现服务器端更好吗?

您可以使用专门为此设计的 websockets:https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

您可以做其他事情,但这可能是最简单的。

如何使用在分布式消息传递库 zeromq 中实现的 publisher/subscriber 模式? php 和 java 有可用的绑定。我最近在一个项目中使用了 zeromq,并且对其易用性和性能感到非常惊讶。