JQuery和PHP – 我可以从服务器上推送吗?

我刚开始看JQuery; 直到现在一切都是PHP。

只是好奇:如果服务器检测到一个事件并想要更新用户的浏览器,我可以进行服务器推送,还是客户端必须轮询?

客户端必须轮询,但您可以进行长轮询 ,即保持请求处于活动状态,直到服务器有一个事件要推回(即完成请求)。

否则,您可以使用Web套接字。

HTTP协议适用于请求 – 响应原则,这意味着服务器只能在客户端请求后生成响应。 这意味着服务器无法在未收到请求的情况下向客户端发送响应。 这不是PHP问题,而是HTTP问题。 所以不,你不能推,客户必须提出请求或民意调查 。 正如亚历克斯所建议的那样,你可以看看长期民意调查。

您可以让客户端使用像彗星等长轮询机制,但是没有办法真正“推”。

你可以使用“彗星”来做到这一点。 不过,PHP是Comet in的一种可怕的语言。 使用PHP进行Comet的一种比较流行的技术(那种工作)是长轮询。

长轮询的想法是为服务器创建一个AJAX请求。 服务器接受连接但不响应(即: while其中有sleep(1)while循环sleep(1) ,直到发生事件。 这可能是秒,分钟等。

但是,为了使长轮询“工作”,您必须确保连接不会很快超时,因此请将执行时间设置为高(分钟,如果可能,则为无限制)。 您还需要在客户端上编写代码来处理服务器的断开连接/超时。 发生这种情况时,应该启动一个新请求。

希望这可以帮助!

这不是与jquery真正相关的东西,而是与Http本身有关。

服务器基本上不可能主动向客户端推送任何东西,两种可能的解决方案是:

  1. 保持Http连接而不关闭它。

  2. 轮询