我想使用 Google App Engine 向将位于防火墙/路由器/NAT 后面的设备发起 http 流量。这些设备将接收来自 GAE 的命令。我可以让设备轮询 GAE 以查找新消息,但这会占用大量流量。或者,我可以尝试永久保持打开连接,但这非常昂贵且糟糕。
这些设备没有静态 IP 地址。但是,它们会定期与 Google App Engine 进行通信,然后设备可以侦听它们刚刚打开的端口以进行任何传入通信。如果我理解TCP 打孔,因为设备已经将流量发送到 GAE,它们将分配一个端口,该端口转换为设备正在侦听的端口,相应地,GAE 在防火墙中有一个可用的孔。
但是,为了让 GAE 向设备发送流量,它需要知道设备在其公共 IP 上分配的端口。问题就在这里,因为 GAE 没有为传入流量提供源/远程端口。在不知道设备刚刚使用的端口的情况下,我无法向设备发送除 http 响应消息之外的任何内容。我实际上无法向该设备发起 http/tcp 消息。
那么,是否有人知道为 GAE 获取传入源/远程端口的方法,或者知道向防火墙后面的设备发起流量的另一种方法?
TL;DR:你究竟是如何获得发送到 GAE 上的应用程序的 http 消息的远程端口的?