← ClaudeAtlas

network-reconnectlisted

モバイル / デスクトップクライアントのネットワーク切断・復旧を堅牢に処理するための設計ガイドライン。ConnectivityManager、指数バックオフ、heartbeat、ライフサイクル連動の実装パターンを提供。
ttamakijp/dev-templates · ★ 0 · Data & Documents · score 73
Install: claude install-skill ttamakijp/dev-templates
このスキルは以下の実装を支援: - 再接続戦略の選定(指数バックオフ / circuit breaker / hybrid) - プラットフォーム別の監視 API - WebSocket 永続接続の heartbeat - テスト可能な設計 ## 呼び出し方 ユーザが「アプリの通信が切れた時に自動復旧したい」「WebSocket reconnect」「ネットワーク復帰時に同期」「切断検出」等を尋ねた時に起動。 詳細な設計方針は [`docs/NETWORK_RESILIENCE.md`](../../../docs/NETWORK_RESILIENCE.md) を参照。 ## 推奨実装パス 1. `NetworkStateMonitor` — ネット状態を Flow で公開 2. `ExponentialBackoff` — jitter 付き再試行ポリシー 3. `ReconnectingWebSocket` — コルーチン + OkHttp の永続 WebSocket 4. `LifecycleAwareReconnect` — LifecycleObserver でフォアグラウンド連動 5. `AirplaneModeTest` — 自動テスト --- ## Android Kotlin スニペット ### NetworkStateMonitor.kt ```kotlin import android.content.Context import android.net.ConnectivityManager import android.net.Network import android.net.NetworkCapabilities import android.net.NetworkRequest import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.conflate import kotlinx.coroutines.flow.distinctUntilChanged enum class NetworkState { Available, Unavailable, Losing, } class NetworkStateMonitor(context: Context) { private val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val networkState: Flow<NetworkState> = callbackFlow { val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { trySend(NetworkState.Available) }