特定の IP:PORT/service/ でサービスが実行されているかどうかを確認し、そうでない場合は別の IP にフォールバックする必要があります。これをアプリ内の 1 か所で行っています。
有効なリクエストを送信してIOエラーの可能性をキャッチするのではなく、生きている場合にPINGする方法はありますか?
特定の IP:PORT/service/ でサービスが実行されているかどうかを確認し、そうでない場合は別の IP にフォールバックする必要があります。これをアプリ内の 1 か所で行っています。
有効なリクエストを送信してIOエラーの可能性をキャッチするのではなく、生きている場合にPINGする方法はありますか?
Web サービスの可用性チェックについては、受け入れられたこの質問への回答を参照してください。Web サービスが存在しない場合 (そうでない場合)、フォールバック接続を試してください。
私がこれを解決した方法は次のとおりです。
/service/ping
status で応答する Ping メソッドをバックエンドに実装しましたHTTP_OK (200)
。非常に短い接続タイムアウトを設定してテストする必要がある各 IP アドレスを確認し、接続が成功するかどうかを確認します (返されるステータスは 200 です)。
ローカル Wi-Fi ネットワーク上のすべての IP を調べて、ローカル ネットワーク サービスがホストされている場所を見つける必要がありました。デバイスは同じ Wi-Fi ネットワークに接続されているため、200 ミリ秒の接続タイムアウトを設定しました。これは、チェックが高速であることを確認するのに十分な時間でした。