Couchbase Lite 2.0 复制

罗伯·桑德斯

我正在将我们的系统从 couchbase lite 1.5 升级到 2.0,但遇到了复制问题。我正在创建一个连续的推拉复制器,它在应用程序启动时提取更改,但在应用程序的整个生命周期内不会继续同步。

这是我的复制器创建代码:

public void StartSync(Uri syncEndpoint, string username, ISecureString password)
        {
            if (_database == null)
            {
                throw new DataHandlerException(DataHandlerError.DatabaseDoesntExist);
            }

            var endpoint = new URLEndpoint(syncEndpoint);
            var config = new ReplicatorConfiguration(_database, endpoint)
            {
                Authenticator = new BasicAuthenticator(username, password.ToString()),
                Continuous = true
            };

            _replicator = new Replicator(config);
            _replicator.AddChangeListener((s, a) =>
            {
                OnSyncChange(a.Status);
            });

            _replicator.Start();
        }

我还使用新语法设置了几个实时查询:

var token = query.AddChangeListener(OnQueryUpdated); // start live query

实时查询回调永远不会被调用,我认为这是因为复制不起作用。

有没有人遇到过这个问题或者有任何关于 Couchbase Lite 2.0 的最佳实践的例子?

更新:

我发现这个问题是由网络套接字问题引起的,这是 Couchbase 同步网关现在使用的协议。我不得不检查我的 nginx 设置并重新启动我的所有服务来纠正这个问题。

罗伯·桑德斯

问题是需要正确配置 nginx 才能使用 2.0.0 版中同步网关使用的新 websockets 协议

设置可以在/etc/nginx/sites-available/default文件中找到,根据同步网关文档的官方设置是:

location / {
    proxy_pass              http://sync_gateway;
    proxy_pass_header       Accept;
    proxy_pass_header       Server;
    proxy_http_version      1.1;
    keepalive_requests      1000;
    keepalive_timeout       360s;
    proxy_read_timeout      360s;
    proxy_set_header        Upgrade $http_upgrade;
    proxy_set_header        Connection "upgrade";
}

但是,我发现当运行 couchbase lite 的应用程序首先打开连接时,这有效,但连续复制仍然是一个问题。一种可能的解决方法是将客户端直接指向同步网关,而根本不使用 nginx。这需要更多的调查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android Couchbase Lite复制

来自分类Dev

Couchbase Lite拉式复制

来自分类Dev

使用Couchbase Lite过滤的请求复制的状态

来自分类Dev

iOS使用CouchBase Lite

来自分类Dev

Couchbase lite与Couchbase Server的清晰概念

来自分类Dev

Couchbase-lite和CouchDB

来自分类Dev

Android L上的Couchbase Lite

来自分类Dev

Couchbase Lite Doc缺少属性

来自分类Dev

ElasticSearch Couchbase复制问题

来自分类Dev

CouchBase复制处理

来自分类Dev

Couchbase数据复制Elasticsearch

来自分类Dev

具有复制功能的移动本地数据库(例如Couchbase lite,Parse.com或Claudant)可以代替Web服务层吗?

来自分类Dev

哪个版本的Couchbase Lite在Android中?

来自分类Dev

Couchbase Lite-同步参考字段

来自分类Dev

couchbase lite无效的数据库名称

来自分类Dev

如何执行简单的Couchbase Lite查询

来自分类Dev

如何在Android上实现Couchbase Lite?

来自分类Dev

使用Couchbase Lite上载活动日志

来自分类Dev

Couchbase Lite在Windows的哪里存储其文件?

来自分类Dev

为什么 couchbase lite 总是同步

来自分类Dev

CouchBase复制错误到弹性搜索

来自分类Dev

Vagrant Box上的Couchbase和ElasticSearch复制

来自分类Dev

Spring Data Couchbase是否可以复制?

来自分类Dev

couchbase 集群文档不复制而是分裂

来自分类Dev

在Couchbase Lite android中了解已删除的文档

来自分类Dev

CouchBase Lite,排除查询中具有某些键的文档

来自分类Dev

如何将Couchbase-Lite Android与CouchDB同步?

来自分类Dev

Xamarin.forms中的couchbase.lite链接行为

来自分类Dev

如何在Android的Couchbase-lite中实现“ WHERE”条件