php - CouchDB实时Ajax推送更新

标签 php jquery ajax couchdb

我正在开发一个简单的 PHP 应用程序,使用 CouchDB 和 PHP-on-Couch访问一些 View ,它运行良好。我的下一步是引入 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);
    });
});

知道这里会发生什么吗?

最佳答案

我相信答案很简单。

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

连续 查询是 COMET。它永远不会“完成”HTTP 回复,它将永远保持连接打开(错误、崩溃等除外)。每次发生变化时,zoom,Couch 都会将其发送给您。

换句话说,尝试将 feed=longpoll 更改为 feed=continuous,看看是否能解决问题。

对于背景,我建议在 change notifications 上阅读 CouchDB 权威指南当然还有出色的 Couchbase 单服务器 changes API documentation .

关于php - CouchDB实时Ajax推送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530737/

相关文章:

php - 将邮政编码送货字段更改为 Woocommerce 中的下拉列表

javascript - 通过 css+javascript 添加/删除阴影

javascript - 更改 Iframe Z 索引

php - jQuery $.ajax 和 php 删除文件

c# - 将表格推至屏幕

php - 通过 WooCommerce 产品设置中的自定义复选框将类添加到 WooCommerce 页面

php - php 中的动态 url 或页面

php - Composer require-dev 在不同的包中需要依赖 require-dev

javascript - 如何使用 HTML2Canvas 为 jQuery 元素截取屏幕截图?

javascript - 无法让 JQuery AJAX 成功事件显示感谢页面