タイムアウトの制御

SDKの各メソッドからBaaS@rakuzaと通信を行い、長時間応答がない場合はタイムアウトします。

デフォルトのタイムアウト時間はプラットフォームごとに異なります。

  • iOS: 60秒
  • Android: 300秒
  • JavaScript: 30秒

タイムアウトが発生した場合、ステータスコードがタイムアウトエラー(9031)のレスポンスが返却されます。

RKZService.sharedInstance().getSystemDate { now, responseStatus in
    if responseStatus.statusCode == .connectionTimeout {
        // ステータスコードがタイムアウトエラー(9031)の場合
        print("タイムアウトエラー")
    }
}
[[RKZService sharedInstance] getSystemDateWithBlock:^(NSDate * _Nullable now, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.statusCode == RKZApiStatusCodeConnectionTimeout) {
        // ステータスコードがタイムアウトエラー(9031)の場合
        NSLog(@"タイムアウトエラー");
    }
}];
RKZClient.getInstance().getSystemDate { now, rkzResponseStatus ->
    if (rkzResponseStatus.statusCode == RKZResponseStatus.ERROR_CODE_TIMEOUT) {
        // ステータスコードがタイムアウトエラー(9031)の場合
        Log.d(TAG, "タイムアウトエラー")
    }
}
RKZClient.getInstance().getSystemDate(new OnGetSystemDateListener() {
    @Override
    public void onGetSystemDateListener(Calendar now, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.getStatusCode().equals(RKZResponseStatus.ERROR_CODE_TIMEOUT)) {
            // ステータスコードがタイムアウトエラー(9031)の場合
            Log.d(TAG, "タイムアウトエラー");
        }
    }
});
RKZClient.getSystemDate(function (now) {
  // ...
}, function (error) {
  if (error.status_code === '9031') {
    // ステータスコードがタイムアウトエラー(9031)の場合
    console.error('タイムアウトエラー')
  }
})
try {
  const now = await RKZ.now()
  // ...
} catch (error) {
  if (error.status_code === RKZ.Status.ErrorTimeout) {
    // ステータスコードがタイムアウトエラー(9031)の場合
    console.error('タイムアウトエラー')
  }
}
try {
  final now = await RKZClient.instance.now();
  // ...
} on PlatformException catch(e) {
  if (e.code == RKZStatus.errorTimeout) {
    // ステータスコードがタイムアウトエラー(9031)の場合
    print('タイムアウトエラー');
  }
}

タイムアウト時間は変更することができます。

RKZService.sharedInstance().setDefaultTimeout(10) // 秒で指定
[[RKZService sharedInstance] setDefaultTimeout:10]; // 秒で指定
RKZClient.getInstance().setDefaultTimeout(10) // 秒で指定
RKZClient.getInstance().setDefaultTimeout(10); // 秒で指定
// 秒で指定
RKZClient.setDefaultTimeout(10, function () {
  // 成功時
  console.debug('設定完了')
}, function (error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})
RKZ.config.timeout = 1000 // ミリ秒で指定
await RKZClient.instance.setDefaultTimeout(10); // 秒で指定