組み込みデバイス (xMega128(C) ベース) と Android アプリ間のデータ交換を可能にするソリューションを考え出そうとしています。問題は、データ交換をインターネット経由で行う必要があり、組み込みデバイスとアプリを実行するモバイル デバイスの両方が異なる NAT の背後にあり、異なる ISP、3G、LTE などを使用して接続できることです。
UDP ホール パンチングを試しましたが、対称 NAT では機能しません。予測付きの多穴パンチングも、100% の信頼性を保証するものではありません。ICE の使用も検討しましたが、ICE C ライブラリ (pjnath、libnice) は選択したハードウェアと互換性がありません (ライブラリには os が必要です)。現在、トラフィックリレーサーバーの実装または使用 (存在する場合) を検討していますが、それは私にはハックのように思えます。
私が考慮していなかった他のオプションはありますか?どんな助けでも大歓迎です。
理想的には、通信スキームは次のようになります。
100%信頼できる
比較的低遅延 (絶対最大 3 秒)
スケーラブル (将来的には最大 50 万デバイス)
アプリとデバイスの両方で初期化可能
マルチユーザー – 1 つのデバイスが多数の Android アプリに接続します
また、これが役立つ場合、デバイスとアプリの間のデータ交換はそれほど激しくありません。1 時間あたり約 1 セッション、1 セッションあたり最大 50 件のメッセージが 10 ~ 20 秒間隔で送信され、各メッセージの重量は約 100 バイトです。