我正在创建一个需要实时通知系统的网络应用。如何设置我的服务器从mySQL数据库中提取数据,然后将其推送到浏览器。我绝对没有想法如何做到这一点。如果有人可以提供帮助,我们将不胜感激!非常感谢!
编辑:我应该更具体一点,我正在提取数据,因为最近在XYZ创建了一个帐户,XZY最近......非常感谢!答案 0 :(得分:13)
您无法将数据推送到浏览器,但您可以执行的操作是设置网页以每隔几秒轮询一次服务器以获取更新。示例设置为:
在您的网站中,每隔几秒就有一个在计时器上运行的javascript函数(或者适合您情况的任何时间间隔)。
在页面加载时启动该计时器。
javascript函数调用对Web服务器上的Web服务的AJAX调用(稍后会详细介绍)。
在服务器端,您需要某种跟踪这些事件的系统,并将它们存储在某个地方,例如带有时间戳的数据库表中。因此,例如当XYZ创建一个帐户时,该帐户将记录在数据库中的“事件”表中。
AJAX调用调用的Web服务将在该表上运行查询并检索自上次调用以来的所有条目。然后只需使用这些结果更新网页。
显然不是100%“实时”,因为根据你在JS计时器中设置的时间间隔会有一个小的延迟,但它非常接近。
答案 1 :(得分:7)
您可以使用websockets为您的网站创建推送通知服务,并为不支持websockets的浏览器提供长时间的轮询回退。这确实需要大量的技术/编程知识。
一些好的资源是: http://socket.io(使用node.js后端作为Web套接字并处理降级) http://pusherapp.com(商业解决方案,如果您不想推出和维护自己的服务)
对于支持websockets的浏览器列表,您可以搜索“caniuse” - 它为浏览器版本支持的功能提供了很多详细信息
注意:对于像Facebook这样的数百万用户应用程序,我认为他们已经权衡了为5000多万个并发用户运行websockets的优势,并得出结论,在连接到数百万个套接字的所有节点上保持数据一致将是太多了。我可以想象,在套接字系统上执行此操作而不是基本操作类似sql的基础结构将是一个逻辑噩梦。我不能代表他们发言,这只是我的假设。但是,最近有多少网站使用推送和轮询系统,你会感到惊讶:)