Google App Engine を使用して、ファイアウォール/ルーター/NAT の背後にあるデバイスへの http トラフィックを開始したいと考えています。これらのデバイスは、GAE からコマンドを受信します。新しいメッセージを探すためにデバイスに GAE をポーリングさせることもできますが、これは大量のトラフィックを使用します。または、接続を永続的に開いたままにすることもできますが、それは非常に高価で悪いことです。
デバイスには静的 IP アドレスはありません。ただし、Google App Engine と定期的に通信するため、デバイスは着信通信用に開いたばかりのポートをリッスンできます。デバイスがすでにトラフィックを GAE に送信しているため、 TCP ホール パンチングを理解していれば、デバイスがリッスンしているポートに変換されるポートが割り当てられ、対応して GAE はファイアウォールで利用可能なホールを持っています。
ただし、GAE がデバイスにトラフィックを送信するには、パブリック IP でデバイスに割り当てられたポートを認識する必要があります。ここに問題があります。GAE は着信トラフィック用のソース/リモート ポートを利用できないからです。デバイスが使用したばかりのポートがわからないため、http 応答メッセージ以外はデバイスに送信できません。そのデバイスへの http/tcp メッセージを実際に開始することはできません。
では、GAE の着信ソース/リモート ポートを取得する方法を知っている人、またはファイアウォールの背後にあるデバイスへのトラフィックを開始する別の方法を知っている人はいますか?
TL;DR: GAE 上のアプリに送信される HTTP メッセージのリモート ポートを取得するにはどうすればよいですか?