CouchDB实时Ajax推送更新

cra*_*awf 5 php ajax jquery couchdb

我正在开发一个简单的PHP应用程序,使用CouchDB和PHP-on-Couch来访问一些视图,它工作得很好.我的下一步是引入Ajax以使用数据库中的数据更新前端.

据我所知,您可以使用_changes通知来轻松检测对数据库所做的任何更改.因此,它需要index.html监视更改(通过长轮询),调用loadView.php来更新页面内容.

首先,我希望以上是正确的方法...

其次,当浏览到index.html时,页面似乎永远不会完全加载(页面加载栏永远不会完成).进行更改后,Firebug会按预期显示结果,但不会显示任何后续更改.这时,页面似乎已经停止了无限加载.

到目前为止,我正在使用jQuery来进行Ajax调用...

$.getJSON('http://localhost:5984/db?callback=?', function(db) {
    console.log(db.update_seq);
    $.getJSON('http://localhost:5984/db/_changes?since='+db.update_seq+'&feed=continuous&callback=?', function(changes) {
        console.log(changes);
    });
});
Run Code Online (Sandbox Code Playgroud)

有什么想法可以在这里发生吗?

Jas*_*ith 5

我相信答案很简单.

一个longpoll查询是AJAX,保证只响应一次,比如获取HTML或图像.在等待更改时可能需要一段时间才能做出响应; 或者如果已经发生变化,它可以立即回复.

一个连续查询是彗星.它永远不会"完成"HTTP回复,它将永远保持连接打开(错误,崩溃等除外).每当发生变化时,变焦,Couch都会发送给您.

因此,换言之,尝试改变feed=longpoll,以feed=continuous看是否能解决它.

作为背景,我建议更改通知的CouchDB权威指南,当然还有优秀的Couchbase单服务器更改API文档.