Я обновляю наши системы с couchbase lite 1.5 до 2.0 и столкнулся с проблемой репликации. Я создаю непрерывный репликатор «push and pull», который извлекает изменения при запуске приложения, но не продолжает синхронизацию в течение всего срока службы приложения.
Вот мой код создания репликатора:
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?
UPDATE:
Я обнаружил, что эта проблема была вызвана проблемой с веб-сокетами, которая сейчас используется протоколом Couchbase sync gateway. Мне пришлось проверить мои настройки nginx и перезапустить все мои службы, чтобы исправить эту проблему.