【问题标题】:PouchDb <-> CouchDb ReplicatePouchDb <-> CouchDb 复制
【发布时间】:2021-04-30 21:46:29
【问题描述】:

当我关闭网络并在几秒钟后打开网络时,我遇到了复制问题。

打开网络后,我必须等待 3-5 分钟之间的复制同步:

在 prod 环境中,这可能是有问题的。

有什么想法吗?

【问题讨论】:

  • 请不要发布图片,随着时间的推移,它们最终会变成断开的链接,更重要的是它可以防止有视力障碍的人提供帮助。阅读pouchdb.com/guides/replication.html#live%E2%80%93replication,它讨论了您发布的问题,特别是retry 选项和paused 同步事件。

标签: couchdb pouchdb


【解决方案1】:

好的,对不起图片。

我读到了 pouchdb 中的复制和使用重试选项

我的代码:

  this.service.synch().then((data) => {
    this.lottieSpashScreen.hide();

  }).catch((err) => {
    console.log('no network or couch not respond')
    this.lottieSpashScreen.hide();

  });

在役:

synch() {

let optionsToAndFrom = {
  live: true, 
  retry: true,
  continuous: true
};
this.db.replicate.to(this.remote, optionsToAndFrom)

return this.db.replicate.from(this.remote)
  .on('complete', (info) => {
    this.db.replicate.from(this.remote, optionsToAndFrom) 
  }) 
  .on('error', (info) => {
    console.log('error')
  })}

有时如果设备长时间断开连接,复制会停止,我必须重新启动应用程序。

在网络上我可以看到停止请求的时间超过了四分钟

编辑:在浏览器中一切正常,没有问题。

问题出在安卓设备上

编辑:

当我启动应用程序和网络无法连接时,我可以在日志中看到:

net::ERR_INTERNET_DISCONNECTED

那太好了。

但是当我启动应用程序和网络连接并在几秒钟后断开连接时,我只能在网络中看到该请求处于待处理状态而没有错误。当我在大约几分钟后打开网络时,此请求已执行,但当我在大约五分钟后关闭网络时,此请求处于待处理状态。

【讨论】:

  • 您需要通过复制选项back_off_function 实现自定义回退功能,请阅读Customizing retry for replication。您需要的一切都在那里。
  • 我尝试:live:true,retry:true,continuous:true,back_off_function:function (delay) { console.log(delay) if (delay === 0) { return 1000; } 返回 5000;但是当我启动应用程序并且网络关闭时它工作正常。我可以看到 cosnole 日志。但是当应用程序正常工作并且我从控制台联网时是空的并且复制不起作用。
  • 当我启动应用程序和网络未连接时,我可以在日志中看到:net::ERR_INTERNET_DISCONNECTED 这太好了。但是当我启动应用程序和网络连接并在几秒钟后断开连接时,我只能在网络中看到该请求处于待处理状态而没有错误。当我在大约几分钟后打开网络时,这个请求被执行,但是当我在大约五分钟后关闭网络时,这个请求处于待处理状态,没有改变状态。请帮忙
  • 您是否尝试过heartbeattimeout 高级复制选项?
  • 我在其他安卓上试过,安卓 10 没问题。问题出在 Zebra 设备上的 Android 6.0.1 上。目前我不知道问题出在 Android 6.0.1 还是 Zebra 设备上。
猜你喜欢
  • 2013-06-07
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多