我会尽力解释这个问题。但是当你有一些动态内容,如消息,通知等时,基本上在网站上......你会希望在消息到达后立即将这些信息呈现给用户。例如,向用户发送新消息节目,在您网站的标题中显示带有计数的气泡。
这些天你几乎在每个网站都看到了这些东西,我不确定实现这样一个功能的最佳方式。
我最初的想法是编写一些ajax调用,然后将其包装在setInterval
调用中,以便每30秒左右请求一次。这里显而易见的问题是:a)您必须等待30秒才能获得请求; b)您可能在一天内请求服务器数百次,而且没有任何实际的新内容可供显示。
我的第二个想法是使用EventListeners,因为它们似乎更理想,因为据我所知他们只在服务器告诉它时才做一个请求。但我不是百分之百确定如何构建这样的东西。任何人都可以举起一个简单的例子,或指出一些可以作为此类基础的东西吗?
所以要澄清我想做的事情:
当发送新消息或创建通知等新事件时,这将发送事件监听器拾取的事件并更新页面上的某些内容,或者显示带有信息的小弹出窗口或更新气泡,例如Messages (2)
我将使用CakePHP和jQuery来实现它。因此,任何特定的东西都会很棒......希望有人可以帮助我。
基本上我是在询问EventListener与setInterval以及如何使用ajax调用...
答案 0 :(得分:2)
正如Alex Ball所建议的,您应该研究COMET编程技术,并查看这个问题的答案Simple comet example using php and jquery。实现有效技术并不是一个“简单”的答案,但最有效的方法是使用iframe。使用iframe将允许您与服务器(PHP端)建立持久连接。在这里,您将能够检查新消息(查询新消息),如果有,请返回您的数据。您的ajax调用(成功函数)将处理此数据,然后再次发回服务器。如果没有,那么你将不得不循环。 同样,有效的COMET编程技术并不容易实现。 以下是一些有用的示例: http://www.webreference.com/programming/javascript/rg30/index.html, http://www.zeitoun.net/articles/comet_and_php/start,setInerval对聊天无效,可能是通知。
COMET技术并非特定于CakePHP。