【发布时间】:2011-03-09 18:18:53
【问题描述】:
我正在尝试为我的网站创建实时订单页面。我需要自动更新页面以显示已下新订单并在数据库中有新订单行时显示警报/声音。
关于如何轻松实现这一目标的任何想法?
谢谢, -阿杰
【问题讨论】:
我正在尝试为我的网站创建实时订单页面。我需要自动更新页面以显示已下新订单并在数据库中有新订单行时显示警报/声音。
关于如何轻松实现这一目标的任何想法?
谢谢, -阿杰
【问题讨论】:
您需要使用Comet 之类的东西才能将数据推送到客户端。
然后,使用MySQL trigger 以某种方式在您的服务器应用程序中引发一个事件,该事件保持 Comet 连接打开以推送适当的数据。
许多开发人员使用的不太优雅的方式(至少在WebSockets 流行之前)是poll with AJAX for changes,但这有很高的带宽开销和更长的延迟。
【讨论】:
从 AJAX 视图中,您应该像这样在 javascript 中使用计时器...
// First parameter is an expression and second is a interval as miliseconds.
setTimeout ( "UpdateFunction()", 2000 );
我还建议您使用此代码...
setTimeout ( "UpdateFunction()", 5000 );
function UpdateFunction( )
{
// (do something here)
setTimeout ( "UpdateFunction()", 5000 );
}
您的UpdateFunction() 应该调用更新订单列表的php 或asp 页面。
【讨论】:
我认为轮询方法会很好,因为服务器推送对浏览器有很多负面影响。
如果使用轮询路由,我建议在您的页面上发生一个定时事件,该事件将调用 Web 方法。然后,Web 方法将返回有关排队订单的数据(有点像 ID)。将 ID 列表与页面上当前充实的内容进行比较,并假设您在新给定的列表中有不存在的内容(反之亦然),调用单独的方法来检索其他详细信息以显示来自的新订单或删除旧条目。
这样,您无需保持稳定的流向服务器(这会阻止用户的浏览器发出额外的内容请求)。
我希望这会有所帮助。
【讨论】: