【发布时间】:2018-04-25 15:29:03
【问题描述】:
我正在将我们的系统从 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 设置并重新启动我的所有服务来纠正这个问题。
【问题讨论】:
-
您可以从您的应用程序和同步网关发布日志吗?是什么让您认为复制正在停止?
-
我已经设法修复它。这是 Web 套接字和 nginx 的问题。
-
请随时在下面的答案中提供您的发现,而不是留在问题中
标签: c# replication couchbase-lite