Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 将数据发送到NAT和防火墙后面的非浏览器客户端的最佳方式?_Http_Tcp_Stream_Push_Nat - Fatal编程技术网

Http 将数据发送到NAT和防火墙后面的非浏览器客户端的最佳方式?

Http 将数据发送到NAT和防火墙后面的非浏览器客户端的最佳方式?,http,tcp,stream,push,nat,Http,Tcp,Stream,Push,Nat,以下是场景: 客户端#1将一些信息放入服务器(使用HTTP请求) 服务器保存该信息,并等待客户端2也将其信息放入。客户端1和客户端2之间的通话时间从几秒到几个小时不等 当客户机2将其信息放入服务器时,服务器通过HTTP请求将客户机1信息返回给客户机2 然后,服务器需要将客户机2信息返回给客户机1 假设无法直接访问客户端1(NAT、防火墙),并且两次调用之间的时间可能很长,如何将客户端2信息返回给客户端1 我想避免客户端1经常戳服务器。。。客户端不是使用web浏览器连接到服务器,而是使用一个自定义

以下是场景:

  • 客户端#1将一些信息放入服务器(使用HTTP请求)

  • 服务器保存该信息,并等待客户端2也将其信息放入。客户端1和客户端2之间的通话时间从几秒到几个小时不等

  • 当客户机2将其信息放入服务器时,服务器通过HTTP请求将客户机1信息返回给客户机2

  • 然后,服务器需要将客户机2信息返回给客户机1

  • 假设无法直接访问客户端1(NAT、防火墙),并且两次调用之间的时间可能很长,如何将客户端2信息返回给客户端1


    我想避免客户端1经常戳服务器。。。客户端不是使用web浏览器连接到服务器,而是使用一个自定义应用程序,在该应用程序中,我们拥有完全控制权

    如果客户端在步骤1和步骤4之间的任何时间关闭连接,则客户端将不得不定期戳戳服务器。否则,让客户端保持其初始连接打开,等待一段时间的数据,即使这需要几个小时,然后在数据到达后关闭连接。

    感谢您的回答,因此,如果我有一个使用python/django、php或其他语言的web服务器,我只需在发送响应之前等待,直到收到信息。如果连接断开,客户端只需再次请求。考虑到客户端是一个自定义软件(不是浏览器),是否有更有效的方法来实现它?不是使用TCP,不是。要么客户端在数据最终到达之前一直保持连接,要么它退出并定期重新连接以轮询数据。