我想将 NAT Punchthrough 实现为客户端应用程序的一部分,以允许客户端在路由器后面时相互连接。我希望使用 Azure 移动服务来实现这一点,但为了做到这一点,服务器需要将所有传入连接的 ip 地址和端口保存在数据库中(以便其他客户端可以查找主机并连接回来给发布数据的客户)。
无论如何要在服务器端脚本中获取此连接(IP 地址和端口)信息?如果没有,有哪些替代服务可以让我设置这样的 API?
谢谢!
我想将 NAT Punchthrough 实现为客户端应用程序的一部分,以允许客户端在路由器后面时相互连接。我希望使用 Azure 移动服务来实现这一点,但为了做到这一点,服务器需要将所有传入连接的 ip 地址和端口保存在数据库中(以便其他客户端可以查找主机并连接回来给发布数据的客户)。
无论如何要在服务器端脚本中获取此连接(IP 地址和端口)信息?如果没有,有哪些替代服务可以让我设置这样的 API?
谢谢!
我在 windows azure 论坛上的另一个线程上找到了答案。
标头通过移动服务自定义 api 功能公开。此外,azure 使用转发机器将传入请求路由到适当的虚拟机。这台机器是一个代理,它将传入的连接信息保存到 x-forwarded-for http 标头中。因此,从自定义脚本中,我们可以从标头中查询传入的连接信息。需要注意的是,x-forwarded-for 标头应该包含 ip 地址和端口号。
这是另一个线程中给出的自定义 api 示例。
exports.get = function(request, response) {
var ip = request.headers['x-forwarded-for'];
response.send(statusCodes.OK, ip);
};
目前这不可用。Azure 团队正在努力增加有关脚本请求的信息量。至于何时可用,我不确定。