google-app-engine - 使用 Google App Engine 向防火墙后面的设备发起消息

标签 google-app-engine sockets websocket hole-punching

我想使用 Google App Engine 启动到将位于防火墙/路由器/NAT 后面的设备的 http 流量。这些设备将接收来自 GAE 的命令。我可以让设备轮询 GAE 以查找新消息,但这会占用大量流量。或者,我可以尝试永久保持打开连接,但那是非常昂贵和糟糕的。

设备不会有静态 IP 地址。但是,他们将定期与 Google App Engine 通信,然后设备可以监听他们刚刚为任何传入通信打开的端口。如果我明白TCP Hole Punching由于设备已经将流量发送到 GAE,因此它们将分配一个端口,该端口转换为设备正在监听的端口,相应地,GAE 在防火墙中有一个可用的漏洞。

但是,为了让 GAE 向设备发送流量,它需要知道设备在其公共(public) IP 上分配的端口。问题就在这里,因为 GAE 没有为传入流量提供源/远程端口。在不知道设备刚刚使用的端口的情况下,我无法向设备发送除 http 响应消息以外的任何内容。我实际上无法向该设备启动 http/tcp 消息。

那么,有没有人知道获取 GAE 的传入源/远程端口的方法,或者知道向防火墙后面的设备发起流量的替代方法?

TL;DR:您究竟如何获得发送到 GAE 上应用程序的 http 消息的远程端口?

最佳答案

secure data connector已弃用,您最好的选择是部署一个服务来代理传入的请求。您有许多选项,例如配置防火墙和设置端口转发或 apache 反向代理。

如果您的内部地址发生变化,那么这也是处理这个问题的地方。例如,您可以让 DHCP 服务器触发 apache 反向代理中的配置更改。

关于google-app-engine - 使用 Google App Engine 向防火墙后面的设备发起消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17429928/

相关文章:

c# - 调用 Dispose() 后程序挂起

node.js - Couchdb 套接字在 View 中挂起

c - 为什么我的 UDP 客户端发送数据比服务器接收数据花费的时间更长?

node.js - Node js 服务器在 Windows 上运行时工作,但在 Linux 上运行时出现 TypeError

Java Servlet、JSP 和两个客户端之间的数据传输

java - AppEngine JDO 查询过滤器 "property has ancestor"

python - 模型中的自动 GUID key_name

android - 从android到GAE的未知主机异常

java - appengine 将 User 视为附加参数

html - websocket客户端能否从80/443以外的不同端口连接到websocket服务器