代码之家  ›  专栏  ›  技术社区  ›  Mawg says reinstate Monica

jquery&php-我可以从服务器推吗?

  •  10
  • Mawg says reinstate Monica  · 技术社区  · 14 年前

    我刚刚开始研究jquery;到目前为止,所有东西都是php。

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

    5 回复  |  直到 11 年前
        1
  •  12
  •   alex    11 年前

    客户必须投票,但你可以 long polling ,即保持请求活动,直到服务器有一个事件要回滚(即完成请求)。

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

        2
  •  5
  •   Alex    14 年前

    HTTP协议根据请求-响应原则工作,这意味着 服务器只能根据来自的请求生成响应 客户。这意味着服务器 不能 向发送响应 客户没有收到请求。这是 不是PHP问题,而是HTTP问题。所以不,你不能推,客户机必须发出请求,或者 民意测验 . 正如亚历克斯建议的那样,你可以看看长期的投票。

        3
  •  3
  •   Paul Kehrer    14 年前

    您可以让客户机使用一个很长的轮询机制(如Comet等),但无法真正“推送”。

        4
  •  3
  •   mattbasta    14 年前

    你可以用“彗星”来做这个。不过,PHP是一种糟糕的Comet语言。在PHP中使用Comet(这类工作)的最流行技术之一是长轮询。

    长轮询的思想是创建一个到服务器的Ajax请求。服务器接受连接但不响应(即:A while 循环 sleep(1) 直到事件发生。这可能是几秒钟、几分钟等。

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

    希望这有帮助!

        5
  •  3
  •   xandy    14 年前

    这与jquery没有太大关系,而是与HTTP本身有关。

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

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

    2. 投票