如何在PHP + Javascript / jQuery上实现观察者模式?

时间:2009-10-27 07:05:43

标签: php javascript jquery observer-pattern

就像在SO中,在回答问题时,如果有人回答了问题,会出现通知(通过AJAX?)。我对此进行复制的唯一方法是在我的脚本中包含一个超时,如果每n秒发生一次更新,则会超时。有没有办法在PHP + Javascript(w / jQuery)上使用观察者模式来做到这一点?

2 个答案:

答案 0 :(得分:2)

您必须查看 ReverseAJAX COMET方法。

根据维基百科

  

反向Ajax是指Ajax设计   使用长期HTTP的模式   连接以实现低延迟   Web服务器和Web服务器之间的通信   一个浏览器。基本上它是一种方式   从客户端向服务器发送数据   推送服务器数据的机制   回到浏览器。

修改

我建议你实现以下方法,这很容易实现。我以stackoverflow应答为例。

  1. 答案页面加载完成后。启动AJAX请求(Asynchronos,因此它不会阻止UI)
  2. 它将在服务器端寻找任何新的更新(轮询数据库以检查是否添加了任何新答案)
  3. 如果有更新,则仅将数据返回给浏览器。否则保持冷静。
  4. 将数据返回给客户端后,客户端应调用另一个AJAX请求并等待更新。
  5. 在剩余的页面生命周期内重复步骤2到4。
  6. 希望这有帮助。

答案 1 :(得分:0)

如果您使用超时来查询服务器的更新,它仍可能被视为Observer模式的特殊实现。不幸的是,不可能以相反的方式做到这一点。如果服务器完成对主HTTP请求的响应,则客户端只完成“监听”它。执行此操作的唯一方法是从客户端发出异步请求。