充当伪服务器的HTTP客户端

充当伪服务器的HTTP客户端,http,client-server,protocols,http-protocols,Http,Client Server,Protocols,Http Protocols,假设我将部署一个可能位于NAT/防火墙后面的服务器应用程序,我不想要求用户调整NAT端口映射。换句话说,连接到服务器是不可能的,但我的应用程序本质上是一个服务器应用程序,即它根据URI发回对象 现在,我正在考虑定期从服务器启动连接,以查看有哪些请求需要响应。我将通过端口80使用HTTP,它可能在任何地方都可以通过NAT/防火墙工作 问题是,在实现可以在应用程序级别充当服务器的客户机(特别是使用HTTP)时,是否有任何标准注意事项和常见做法?有特殊的HTTP头吗?设计模式 我正在考虑以下方案:

假设我将部署一个可能位于NAT/防火墙后面的服务器应用程序,我不想要求用户调整NAT端口映射。换句话说,连接到服务器是不可能的,但我的应用程序本质上是一个服务器应用程序,即它根据URI发回对象

现在,我正在考虑定期从服务器启动连接,以查看有哪些请求需要响应。我将通过端口80使用HTTP,它可能在任何地方都可以通过NAT/防火墙工作

问题是,在实现可以在应用程序级别充当服务器的客户机(特别是使用HTTP)时,是否有任何标准注意事项和常见做法?有特殊的HTTP头吗?设计模式

我正在考虑以下方案:

  • 客户端(我的逻辑服务器)向服务器发送一个虚拟HTTP请求
  • 服务器使用非标准头
    X-Request-URI:
    X-Host:
    X-If-Modified-Since:
    等进行响应,换句话说,请求头被包装到X-xxx中,因为在这种情况下它们不是标准头;还请求保持连接处于活动状态
  • 客户机响应POST请求,发送请求的对象;同样,使用包装的标题(例如
    X-Status:
    等)
除非有一种更“标准”的方式来做类似的事情,否则你认为我的方法是合理的吗


编辑:进行了一次有趣的讨论

我也做了类似的事情。这是很常见的。客户端启动与服务器的连接并保持连接活动。如果会话关闭,客户端将重新启动。会话启动后,服务器可以将任何内容推送到客户端,因为它是由客户端启动的。

那么标头呢,您使用什么向后发送请求并响应它们呢?只要客户端/服务器都同意,它可以完全由您自定义。