Loops Coldfusion-当数据库记录更新时刷新页面

Loops Coldfusion-当数据库记录更新时刷新页面,loops,asynchronous,coldfusion,refresh,cfquery,Loops,Asynchronous,Coldfusion,Refresh,Cfquery,你好 让我描述一下我的问题: 情景: 用户1有一个coldfusion网页,其中包含6个警报,作为使用数据库填充的html元素。用户1不断监视此页面的更改 不同计算机(不同会话)上的用户登录到管理控制台,添加第7个元素并将其插入数据库 数据库包含一个字段,该字段在向数据库中添加并插入警报后立即从0更改为1 用户1的网页不必动态刷新或更新第8个警报 问题: 我正在努力运行一个异步循环,在不冻结页面其余部分的情况下,永久性地查询数据库,以查找告诉它有更改的记录 解决方案: 我需要运行cfq

你好

让我描述一下我的问题:

情景:

  • 用户1有一个coldfusion网页,其中包含6个警报,作为使用数据库填充的html元素。用户1不断监视此页面的更改
  • 不同计算机(不同会话)上的用户登录到管理控制台,添加第7个元素并将其插入数据库
  • 数据库包含一个字段,该字段在向数据库中添加并插入警报后立即从0更改为1
  • 用户1的网页不必动态刷新或更新第8个警报
问题:

  • 我正在努力运行一个异步循环,在不冻结页面其余部分的情况下,永久性地查询数据库,以查找告诉它有更改的记录
解决方案:

  • 我需要运行cfquery来检查数据库中的isUpdated字段
  • cfquery需要每分钟运行一次
  • 一旦cfquery返回1,页面就会刷新,从而填充新警报

可以通过
套接字完成,您不必每分钟检查一次新记录的可用性

您还可以使用
javascript/jquery

<script>
var lastAlert = '#lastAlert#'; //last at the time of loading the page

setInterval(function() {
    lastAlert = isUpdated(lastAlert);
}, 60000);

function isUpdated(lastAlert){
res = lastAlert;
$.ajax({                            
    url: 'checkAlerts.cfm', //in this file do check for changes in the database. should return the number of the last alert
    type: 'POST',
    data: {lastAlert:lastAlert},
    cache: false,
    success:function(res){  
        if(res > lastAlert){
            //your code if there is a new entry 
            alert('a new entry has been added');
        }
    }
});
return res;
}   
</script>

var lastAlert='#lastAlert#'//最后一次加载页面时
setInterval(函数(){
lastAlert=IsUpdate(lastAlert);
}, 60000);
函数已更新(lastAlert){
res=最新警报;
$.ajax({
url:'checkAlerts.cfm',//在此文件中检查数据库中的更改。应返回上次警报的编号
键入:“POST”,
数据:{lastAlert:lastAlert},
cache:false,
成功:功能(res){
如果(res>lastAlert){
//如果有新条目,请输入您的代码
警报(“已添加新条目”);
}
}
});
返回res;
}   

我没有检查代码!但我希望您了解如何继续。

是否希望每隔一段时间运行一次db查询,或者在更新发生时发送推送通知。我在WebSocket方面做得不多,但我认为推送通知是他们非常擅长的事情,本期有点描述了推送通知的需要。请重新阅读您的答案,我想我误解了它。看起来您正在通过WebSocket和jQuery调度请求提供推送通知的两个选项。websocket是一种推送技术,jQuery选项是一种轮询技术,本质上是一种拉式方法。轮询会耗尽网络资源,所以我会选择websocket。如果您使用的是旧版本的Lucee或ACF,那么您可以使用socket.io+nodeJS来实现类似的结果。也用于实时应用程序、聊天应用程序。。。。