【问题标题】:Best way to send data to a non-browser client behind NAT and firewalls?将数据发送到 NAT 和防火墙后面的非浏览器客户端的最佳方式?
【发布时间】:2014-09-12 00:06:06
【问题描述】:

这是场景:

  1. 1 号客户端向服务器发送一些信息(使用 HTTP 请求)

  2. 服务器保留该信息并等待客户端 #2 也输入他的信息。客户 #1 和客户 #2 通话之间的时间可以从几秒到几小时不等。

  3. 当客户端 #2 将其信息发送到服务器时,服务器通过 HTTP 请求将客户端 #1 的信息返回给客户端 #2。

  4. 然后服务器需要将客户端 #2 的信息返回给客户端 #1。

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

我想避免客户端 #1 定期戳服务器...客户端不是使用 Web 浏览器连接到服务器,而是我们可以完全控制的自定义应用程序

【问题讨论】:

    标签: http tcp stream push nat


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答,所以如果我有一个使用 python/django、php 或其他语言的 Web 服务器,我只需要等待发送响应,直到我有信息。如果连接断开,客户端只需再次请求。考虑到客户端是自定义软件(不是浏览器),有没有更高效的实现方式?
    • 不使用 TCP,不。客户端要么一直保持连接,直到数据最终到达,要么退出并定期重新连接以轮询数据。
    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多