假设我要部署一个可能位于NAT /防火墙后面的服务器应用程序,我不想让用户调整他们的NAT端口映射。换句话说,与服务器的连接是不可能的,但我的应用程序本质上是一个服务器应用程序,即它按URI发回对象。
现在,我正在考虑定期从服务器启动连接,以查看要响应的请求。我将通过端口80使用HTTP作为可能从几乎任何地方通过NAT /防火墙工作的东西。
问题是,在应用程序级别实现可以充当服务器的客户端是否存在任何标准考虑因素和常见做法,特别是使用HTTP?任何特殊的HTTP标头?设计模式?
E.g。我正在考虑以下方案:
X-Request-URI:
,X-Host:
,X-If-Modified-Since:
等回复,换句话说,请求标头包含在X-xxx中,因为它们在这种情况下不是标准;还要求保持连接活着X-Status:
等)除非有更“标准”的方式做这样的事情,你认为我的方法是否合情合理?
修改:进行了有趣的讨论on reddit here
答案 0 :(得分:0)
我做过类似的事情。这很常见。客户端启动与服务器的连接并保持连接ALIVE。如果会话关闭,客户端将重新启动。当会话启动时,服务器可以将任何内容推送到客户端,因为它是客户端启动的。