当前位置: 首页 > 知识库问答 >
问题:

域同步在重新连接到internet后不工作

井翰
2023-03-14

当用户连接到对象服务器(登录),然后关闭Internet,将新项目添加到数据库,然后打开Internet时,我无法与realm对象服务器同步-数据未同步
Android应用程序使用4.3。1领域构建

//sync
SyncUser.loginAsync(syncCredentials, urlRealm, new SyncUser.Callback<SyncUser>() {  
@Override
public void onSuccess(SyncUser user){
      syncAccount = new SyncConfiguration
           .Builder(user, urlAccount)
           .waitForInitialRemoteData()
           .name("account_"+userId+".realm")
           .modules(new AccountSchemaModules())
           .errorHandler((session, error) -> {
               Log.e("REALM", "error = " + error.getMessage());})
           .build();

                  syncAccount.shouldDeleteRealmOnLogout();

                  Realm.getInstanceAsync(syncAccount, new Realm.Callback() {
                      @Override
                      public void onSuccess(Realm realm) {
                          syncUserSuccess();
                      }
                  });
              }
          }

//then access to configuration 
Realm.getInstance(syncAccount);

我已尝试在Internet返回时通过呼叫运行同步:

syncAccount.getUser().allSessions().get(i).uploadAllLocalChanges();

但这也无济于事

更新

我有3个SyncConfiguration,为SyncUser使用相同的凭据。逻辑同步连接。这可能是原因吗?此外,我还尝试使用同一个SyncUser进行配置,但结果是一样的

是否可以手动注销/登录连接?或者正确的方法是什么?我试过:

syncAccount.getUser().logout()

但是在SyncConfiguration上,我得到了一个错误:“如果用于打开同一个文件,则配置不能不同。”

更新2当我关闭internet时,我在日志中看到:

E/REALM_SYNC: Connection[2]: Failed to resolve 'url:9080': Host not found (authoritative)
E/REALM_JAVA: java.lang.IllegalArgumentException: Unknown error code: 3
                                                           at io.realm.ErrorCode.fromInt(ErrorCode.java:195)
                                                           at io.realm.SyncSession.notifySessionError(SyncSession.java:170)
                                                           at io.realm.SyncManager.notifyErrorHandler(SyncManager.java:324)
D/REALM_SYNC: Connection[2]: Reconnecting in 795 milliseconds

但在那条信息之后我没看到任何重新连接的记录

当我尝试将项添加到db时,我在日志中看到如下项:

V/REALM_JNI:  --> Java_io_realm_internal_OsSharedRealm_nativeIsClosed -979144320
V/REALM_JNI:  --> Java_io_realm_internal_OsSharedRealm_nativeBeginTransaction -979144320
V/REALM_JNI:  --> Java_io_realm_internal_OsSharedRealm_nativeIsClosed -979144320
V/REALM_JNI:  --> Java_io_realm_internal_OsSharedRealm_nativeIsClosed -979144320
V/REALM_JNI:  --> Java_io_realm_internal_UncheckedRow_nativeGetIndex -979283168

在我打开互联网并将项目添加到数据库之后,我得到了相同的信息。

稍后我发现消息:

D/REALM_JAVA: Network request (authenticate): url
D/REALM_JAVA: AuthenticateResponse. Identity 9d83f9775ebba4deac9003d336b9f4c4; Path /account_1
D/REALM_JAVA: Access Token refreshed successfully, Sync URL: 
V/REALM_JNI:  --> Java_io_realm_SyncSession_nativeRefreshAccessToken
D/REALM_JAVA: Scheduling an access_token refresh in 349573 milliseconds

但服务器端仍然没有更新

共有1个答案

缪英锐
2023-03-14

该问题仅在4.3.0版本中出现,现在已在4.3.2版本中修复,谢谢

 类似资料:
  • 当broker重新启动时,它在第一次工作时很好。但是,这个触发器在第二次重新启动代理时不起作用。我该怎么修好它? 非常感谢。

  • ; ConnectInternet (使用 Dialer 插件) ; Written by Joost Verburg ; ; 当没有可用连接时该函数尝试去创建一个因特网连接。 ; 如果你不能确认使用该安装程序前已有可用的连接的话 ; 在用 NSISdl 插件下载前最好先调用这个函数。 ; ; 这个函数需要 Internet Explorer 3。 ; 如果 IE3

  • 我对java非常陌生。所以如果我犯了愚蠢的错误,我很抱歉。我正在尝试执行servlet中的以下代码,但是在我将值提交到我在索引中创建的登录表单之后,什么也没有发生。html。另外,我还为会话创建了另一个servlet。预期的输出是重定向到我从数据库验证用户名和密码后创建的另一个jsp页面

  • 我有div,可以拖放到绘图区域。可以使用鼠标从源endpoint拖放到目标endpoint手动连接这些div。在这样创建的连接上,连接被分离,但endpoint保留,删除的连接可以通过上述相同的手动过程重新创建。现在,我还将以json格式的连接节点流程图形式的绘图保存到磁盘文件中。在加载文件时,流程图会完美地显示所有连接和节点。现在我在点击一个节点时删除一个连接,它就可以工作了。但是现在我不能再次

  • 问题内容: 我想一个简单的聊天应用程序在这里与socket.io和node.js中 每次重新启动node.js服务器时,socket.io都会自动重新连接,并以某种方式创建与服务器的另一个连接,即客户端现在两次收到相同的聊天消息。我该如何解决? 问题答案: 默认情况下,在disconnect socket.io上重新连接丢失的连接,从而重新运行事件。因此,每次重新连接时,您都会添加一个事件监听器来