Realm~App.동기화

Atlas App Services와 상호 작용하기 위한 클래스입니다.

관련 클래스

AsyncOpenTask
AuthError
BaseSubscriptionSet
In CompatibleSyncedRealmError
MutableSubscriptionSet
Session
서브스크립션
SubscriptionSet
UserIdentity
Realm.App.Sync.SubscriptionsState
static읽기 전용

Realm.App.Sync.SubscriptionSet 세트의 상태를 나타내는 열거형입니다.

유형:
"pending" 또는 "complete" 또는 "error" 또는 "superseded"
속성:
  • 보류 중
    • 유형: "pending" 또는 "complete" 또는 "error" 또는 "superseded"
    • 기본값입니다: pending
    • 구독 업데이트가 로컬에서 유지되었지만 서버가 업데이트된 구독 쿼리와 일치하는 모든 데이터를 아직 반환하지 않았습니다.

  • 완료
    • 유형: "pending" 또는 "complete" 또는 "error" 또는 "superseded"
    • 기본값입니다: complete
    • 서버가 구독을 승인하고 SubscriptionSet가 업데이트되었을 때 구독 쿼리와 일치하는 모든 데이터를 전송했습니다. 이제 서버는 안정적인 상태의 동기화 모드에 있으며, 업데이트가 들어오는 대로 스트리밍합니다.

  • 오류
    • 유형: "pending" 또는 "complete" 또는 "error" 또는 "superseded"
    • 기본값입니다: error
    • 서버가 오류를 반환했으며 이 Realm에 대한 동기화가 일시 중지되었습니다. 실제 오류를 보려면 Subscriptions.error 을(를) 사용합니다.

      여전히 Realm.App.Sync.SubscriptionSet#update 를 사용하여 구독을 업데이트할 수 있으며 새 업데이트가 오류를 trigger하지 않으면 동기화가 다시 시작됩니다.

  • 대체됨
    • 유형: "pending" 또는 "complete" 또는 "error" 또는 "superseded"
    • 기본값입니다: superseded
    • SubscriptionSet가 업데이트된 것으로 대체되었습니다. 이는 일반적으로 누군가가 Subscriptions 의 다른 인스턴스에서 Realm.App.Sync.SubscriptionSet#update 를 호출했음을 의미합니다. 대체된 SubscriptionSet를 사용해서는 안 되며 대신 Realm.subscriptions 에서 새 인스턴스를 얻어야 합니다.

Realm.App.Sync._hasExistingSessions()
static

Realm에 상태에 관계없이 동기화 세션에 대한 참고가 여전히 있는 경우 true 를 반환합니다. false 가 반환되면 현재 세션이 존재하지 않음을 의미합니다.

매개변수:
  • 옵션
    • 유형: Realm.App
    • Realm이 열린 앱입니다.

Realm.App.Sync.enableSessionMultiflexing(앱)
static

Realm 앱에 대해 단일 연결을 통해 여러 동기화 세션을 멀티플렉싱할 수 있습니다. 많은 동기화된 Realm이 열려 있으면 서버에 대해 열려 있는 모든 소켓으로 인해 시스템에서 파일 디스크립터가 부족할 수 있습니다. 세션 멀티플렉싱은 이를 완화하기 위해 설계되었지만 페일오버가 구성된 서버에서는 작동하지 않을 수 있습니다. 파일 설명자 제한에 도달했다는 오류가 표시되고 사용 중인 동기화 세션이 많은 경우에만 사용하세요.

매개변수:
Realm.App.Sync.getAllSyncSessions(사용자)[Realm.App.Sync.Session, ...]
static

사용자의 모든 동기화 세션을 반환합니다.

매개변수:
반환 값: [Realm.App.Sync.Session, ...] 세션의 배열
Realm.App.Sync.getSyncSession(user, partitionValue)Realm.App.Sync.Session
static

사용자 및 파티션 값과 연결된 세션을 반환합니다.

매개변수:
  • 파티션 값
    • 유형: string 또는 number 또는 ObjectId 또는 null
반환값: Realm.App.Sync.Session 세션
Realm.App.Sync.initiateClientReset(, 경로)
static더 이상 사용되지 않습니다.

클라이언트 재설정을 시작합니다. 재설정하기 전에 Realm을 닫아야 합니다.

Atlas Device Sync 서버와의 통신에 복구할 수 없는 오류가 표시되어 정상적인 동기화를 계속할 수 없는 경우 동기화된 Realm을 재설정해야 할 수 있습니다. 가장 일반적인 이유는 클라이언트가 너무 오랫동안 연결이 끊긴 경우입니다.

Realm의 로컬 사본은 보관을 위해 복구 디렉토리로 이동합니다.

Atlas에 성공적으로 동기화되지 않은 로컬 쓰기는 Realm 파일의 로컬 복구 복사본에 존재합니다. 다시 다운로드한 Realm에는 처음에는 Realm이 서버에서 동기화될 때 존재했던 데이터만 포함됩니다.

매개변수:
  • 옵션
    • 유형: Realm.App
    • Realm이 열린 앱입니다.

  • 경로 옵션
    • 유형: string
    • 재설정할 Realm의 경로입니다. 재설정이 불가능하면 오류가 발생합니다.

:
{
  // Once you have opened your Realm, you will have to keep a reference to it.
  // In the error handler, this reference is called `realm`
  const config = {
    // schema, etc.
    sync: {
      user,
      partitionValue,
      error: (session, error) => {
        if (error.name === 'ClientReset') {
          let path = realm.path; // realm.path will no be accessible after realm.close()
          realm.close();
          Realm.App.Sync.initiateClientReset(app, path);
          // - open Realm at `error.config.path` (oldRealm)
          // - open Realm with `config` (newRealm)
          // - copy required objects from oldRealm to newRealm
          // - close both Realms
        }
      }
    }
  };
}
Realm.App.Sync.reconnect(앱)
static

이 메서드를 호출하면 Realm이 Realm 앱을 서버에 즉시 다시 연결하려고 시도합니다.

Realm은 자동으로 다시 연결되지만 지수 백오프를 사용합니다. 즉, 장치가 오랫동안 오프라인 상태인 경우 온라인 상태가 된 후 연결을 복원하는 데 예상보다 시간이 오래 걸릴 수 있습니다. 네트워크 상태를 감지할 수 있는 상황(예: 비행기 모드). 이 메서드를 수동으로 호출하면 더 원활한 사용자 환경을 제공할 수 있습니다.

매개변수:
Realm.App.Sync.setLogger(앱, 로거)
static

동기화 클라이언트의 로그를 캡처합니다. 로그 수준은 한 번만 설정할 수 있으며 앱 인스턴스를 생성한 후 Realm을 열기 전에 설정해야 합니다.

참조: {Realm.App.Sync~setLogLevel}
매개변수:
:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogger(app, (level, message) => console.log(`[${level}] ${message}`));
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setLogLevel(앱, 레벨)
static

동기화 로그 수준을 설정합니다. 로그 수준은 한 번만 설정할 수 있으며 앱 인스턴스를 생성한 후 Realm을 열기 전에 설정해야 합니다.

매개변수:
  • 레벨
    • 유형: LogLevel
    • 새 로그 수준입니다.

:
{
const app = new Realm.App(getAppConfig());
Realm.App.Sync.setLogLevel(app, "all");
const user = await app.logIn(credentials);
const realm = await Realm.open(getRealmConfig(user));
}
Realm.App.Sync.setUserAgent(앱, userAgent)
static

세션이 생성될 때 Realm 객체 서버로 전송될 사용자-에이전트 문자열의 애플리케이션 부분을 설정합니다.

이 메서드는 첫 번째 Realm이 열리는 점까지만 호출할 수 있습니다. 그 후에는 사용자-에이전트를 더 이상 변경할 수 없습니다.

매개변수:
  • userAgent
    • 유형: string
    • 사용자 에이전트 설명

ClientResetConfiguration

여기서는 클라이언트 재설정을 구성하는 옵션에 대해 설명합니다.

유형:
Object
속성:
  • 모드
    • 유형: string
    • "manual" (더 이상 사용되지 않음, Realm.App.Sync.initiateClientReset() 참조), "discardUnsyncedChanges" (서버에서 새 사본 다운로드), "recoverUnsyncedChanges" (원격 및 로컬, 동기화되지 않은 변경 사항 병합) 또는 "recoverOrDiscardUnsyncedChanges" (다음에서 새 사본 다운로드) 동기화되지 않은 변경 사항의 복구가 불가능한 경우 서버)

  • onBefore 옵션
    • 유형: callback(realm) 또는 null
    • 동기화가 클라이언트 재설정을 시작하기 전에 호출됩니다('discardUnsyncedChanges', 'recoverUnsyncedChanges' 또는 'recoverOrDiscardUnsyncedChanges' 모드에만 해당).

  • onAfter 옵션
    • 유형: callback(beforeRealm, afterRealm) 또는 null
    • 클라이언트 재설정이 실행된 후에 호출됩니다. beforeRealmafterRealm 은 클라이언트 재설정 전후의 Realm 인스턴스입니다("discardUnsyncedChanges", "recoverUnsyncedChanges" 또는 "recoverOrDiscardUnsyncedChanges" 모드에만 해당).

  • onFallback 옵션
    • 유형: callback(session, path) 또는 null
    • 복구 또는 삭제가 실패하면 호출됩니다("recoverUnsyncedChanges" 또는 "recoverOrDiscardUnsyncedChanges" 모드에만 해당).

  • onManual 옵션
    • 유형: callback(session, path) 또는 null
    • 수동 클라이언트 재설정 수행 - Realm.App.Sync.initiateClientReset() 참조("수동" 모드만 해당).

downloadBeforeOpenBehavior

동기화된 Realm을 열기 전에 다운로드가 완료될 때까지 기다리려는 경우의 기본 동작 설정입니다.

초기 구독 구성

Realm을 열 때 사용할 초기 Flexible sync 구독 세트의 설정을 구성하는 선택적 객체입니다. 이를 지정하면 이 구독 세트가 서버와 완전히 동기화될 때까지 Realm.open 가 확인되지 않습니다.

예시:

const config: Realm.Configuration = {
  sync: {
    user,
    flexible: true,
    initialSubscriptions: {
      update: (subs, realm) => {
        subs.add(realm.objects('Task'));
      },
      rerunOnOpen: true,
    },
  },
  // ... rest of config ...
};
const realm = await Realm.open(config);

// At this point, the Realm will be open with the data for the initial set
// subscriptions fully synchronized.
유형:
Object
속성:
  • update
    • 유형: callback(realm)
    • Realm.App.Sync~MutableSubscriptionSet 인스턴스 및 Realm 인스턴스로 콜백을 호출하여 초기 구독 세트를 설정할 수 있습니다. 자세한 내용은 Realm.App.Sync.SubscriptionSet#update 를 참조하세요.

  • rerunOnOpen
    • 유형: Boolean
    • 선택적 플래그입니다. true 인 경우 Realm이 열릴 때마다 update 콜백이 다시 실행됩니다(예: 사용자가 앱을 열 때마다), 그렇지 않으면 (기본값) Realm이 아직 존재하지 않는 경우에만 실행됩니다.

logCallback(레벨, 메시지)

사용자 지정 로거로 Atlas Device Sync 클라이언트를 계측할 때 Realm.App.Sync.setLogger 에 전달된 콜백입니다.

매개변수:
  • 레벨
    • 유형: number
    • 0에서 8(포함) 사이의 로그 항목 수준입니다. 이를 ['all', 'trace', 'debug', 'detail', 'info', 'warn', 'error', 'fatal', 'off'] 에 대한 인덱스로 사용하여 레벨 이름을 가져옵니다.

  • 메시지
    • 유형: string
    • 로그 항목의 메시지입니다.

로그 레벨
유형:
"all" 또는 "trace" 또는 "debug" 또는 "detail" 또는 "info" 또는 "warn" 또는 "error" 또는 "fatal" 또는 "off"
openLocalRealmBehavior

동기화된 Realm을 즉시 열고 작업을 시작하려는 경우의 기본 동작 설정입니다. Realm을 처음 여는 경우 백그라운드에서 서버 데이터가 다운로드되는 동안 Realm은 비어 있게 됩니다.

OpenRealmBehaviorConfiguration

동기화된 Realm을 여는 방법을 지정합니다.

유형:
Object
속성:
  • 유형
    • 유형: string
    • Realm을 여는 방법 - 다운로드가 완료될 때까지 기다리려면 'downloadBeforeOpen'을, 로컬 Realm을 열려면 'openImmediately'를 입력합니다.

  • timeOut 옵션
    • 유형: number
    • 다운로드를 기다리는 데 걸리는 시간(밀리초)입니다. 기본값: 무한대

  • timeOutBehavior 옵션
    • 유형: string
    • 다운로드 시간이 초과되었을 때 수행할 작업 - 로컬 Realm을 열려면 'openLocalRealm'을 입력하고 예외를 발생시키려면 'throwException'을 입력합니다.

ProviderType

사용자를 인증하는 데 사용되는 인증 제공자의 유형입니다.

유형:
"anon-user" 또는 "api-key" 또는 "local-userpass" 또는 "custom-function" 또는 "custom-token" 또는 "oauth2-google" 또는 "oauth2-facebook" 또는 "oauth2-apple"
SSLConfiguration

여기서는 Atlas Device Sync를 사용하여 Realm 인스턴스를 만드는 데 사용되는 다양한 옵션에 대해 설명합니다.

유형:
Object
속성:
  • 유효성 검사
    • 유형: boolean
    • SSL 인증서의 유효성을 검사해야 하는지 여부를 나타냅니다. 기본값은 true 입니다.

  • certificatePath
    • 유형: string
    • 신뢰할 수 있는 SSL 인증서를 찾을 수 있는 경로입니다.

  • validateCertificates
    • 유형: sslValidateCallback
    • 서버의 SSL 인증서를 수락하거나 거부하는 데 사용되는 콜백 함수입니다.

Realm.App.Sync.SubscriptionOptions

옵션 Realm.App.Sync.SubscriptionSet.add

유형:
Object
속성:
  • 이름
  • 스로우온업데이트
    • 유형: boolean 또는 undefined
    • 기본적으로 기존 구독과 이름이 같지만 쿼리가 다른 구독을 추가하면 기존 구독이 새 쿼리로 업데이트됩니다. throwOnUpdate 가 true로 설정된 경우 이름은 같지만 쿼리가 다른 구독을 추가하면 대신 예외가 발생합니다. 동일한 이름과 쿼리로 구독을 추가하는 것은 항상 작동하지 않습니다.

SyncConfiguration

여기서는 Atlas App Services 동기화를 사용하여 Realm 인스턴스를 만드는 데 사용되는 다양한 옵션에 대해 설명합니다.

유형:
Object
속성:
  • flexible
    • 유형: boolean
    • Flexible sync( true 경우) 또는 파티션 기반 동기화(기본값)를 사용할지 여부

  • 파티션 값
    • 유형: string 또는 number 또는 BSON.ObjectId 또는 null
    • 파티션 키의 값입니다. 파티션 기반 동기화를 사용하는 경우에만 유효합니다.

  • onError 옵션
    • 유형: callback(session, syncError)
    • 오류 상황에서 호출되는 콜백 함수입니다. 콜백에는 두 개의 인수 sessionsyncError 가 전달됩니다. syncError.name == "ClientReset", syncError.pathsyncError.config 가 설정되고 syncError.readOnly 가 true인 경우(더 이상 사용되지 않음, Realm.App.Sync~ClientResetConfiguration 참조). 그렇지 않으면 syncError 가 최대 5개의 속성을 가질 수 있습니다: name, message, isFatal, categorycode.

  • customHttpheaders 옵션
    • 유형: Object
    • 사용자 지정 HTTP headers의 맵(문자열, 문자열)입니다.

  • newRealmFileBehavior 옵션
    • 유형: OpenRealmBehaviorConfiguration
    • 새 파일을 생성하여 백그라운드에서 동기화할지, 아니면 파일이 동기화될 때까지 기다릴지 여부를 설정합니다. 설정하지 않으면 Realm이 열기 전에 다운로드됩니다.

  • 기존RealmFileBehavior 옵션
    • 유형: OpenRealmBehaviorConfiguration
    • 기존 파일을 열고 백그라운드에서 동기화할지, 아니면 파일 동기화가 완료될 때까지 기다렸다가 열지 여부를 지정합니다. 설정하지 않으면 Realm이 열기 전에 다운로드됩니다.