充当伪服务器的HTTP客户端
假设我将部署一个可能位于NAT/防火墙后面的服务器应用程序,我不想要求用户调整NAT端口映射。换句话说,连接到服务器是不可能的,但我的应用程序本质上是一个服务器应用程序,即它根据URI发回对象 现在,我正在考虑定期从服务器启动连接,以查看有哪些请求需要响应。我将通过端口80使用HTTP,它可能在任何地方都可以通过NAT/防火墙工作 问题是,在实现可以在应用程序级别充当服务器的客户机(特别是使用HTTP)时,是否有任何标准注意事项和常见做法?有特殊的HTTP头吗?设计模式 我正在考虑以下方案:充当伪服务器的HTTP客户端,http,client-server,protocols,http-protocols,Http,Client Server,Protocols,Http Protocols,假设我将部署一个可能位于NAT/防火墙后面的服务器应用程序,我不想要求用户调整NAT端口映射。换句话说,连接到服务器是不可能的,但我的应用程序本质上是一个服务器应用程序,即它根据URI发回对象 现在,我正在考虑定期从服务器启动连接,以查看有哪些请求需要响应。我将通过端口80使用HTTP,它可能在任何地方都可以通过NAT/防火墙工作 问题是,在实现可以在应用程序级别充当服务器的客户机(特别是使用HTTP)时,是否有任何标准注意事项和常见做法?有特殊的HTTP头吗?设计模式 我正在考虑以下方案:
- 客户端(我的逻辑服务器)向服务器发送一个虚拟HTTP请求
- 服务器使用非标准头
,X-Request-URI:
,X-Host:
等进行响应,换句话说,请求头被包装到X-xxx中,因为在这种情况下它们不是标准头;还请求保持连接处于活动状态X-If-Modified-Since:
- 客户机响应POST请求,发送请求的对象;同样,使用包装的标题(例如
等)X-Status:
编辑:进行了一次有趣的讨论我也做了类似的事情。这是很常见的。客户端启动与服务器的连接并保持连接活动。如果会话关闭,客户端将重新启动。会话启动后,服务器可以将任何内容推送到客户端,因为它是由客户端启动的。那么标头呢,您使用什么向后发送请求并响应它们呢?只要客户端/服务器都同意,它可以完全由您自定义。