【问题标题】:Uploading few bytes of data very frequently(every second)非常频繁地上传几个字节的数据(每秒)
【发布时间】:2012-01-11 06:31:14
【问题描述】:

我有一个场景,我需要每秒向服务器发送数据(很少的字节)。 这个细节很重要,所以我也需要加密它。

深入研究后,我认为我们可以使用 HTTP 协议,但在这种情况下,HTTP 标头会大于内容本身。

我们有什么方法可以使用这个(HTTP 协议)以最小带宽发送数据? 或者除了 HTTP 之外还有其他方法吗?

【问题讨论】:

  • 为什么不只是 HTTPS?只需“慢速输入流”(一个长时间运行的连接),又名"Comet"。当然,这有长时间运行连接的开销,一些服务器不能很好地处理(但有些可以!)。 HTTP 也可以做到这一点,但 HTTPS 几乎是“免费”提供加密的。当然,这可以以任何可以想象的“自定义”方式完成,只需尝试亲吻 :)
  • @Yahor : B'coz 交货应该得到保证。
  • @pst :在我看来,HTTP/HTTPS 都有标头信息(元数据)的开销,在我的情况下,它比数据本身更重。
  • @Rites 他们这样做了——尤其是为了建立连接。因此,如果(例如)1000 个样本只有一个连接,那么从长远来看,开销可以忽略不计。 (这导致与一个样本的 1000 个连接的流量明显不同。)支持 Comet 的服务器 - 例如请求延续 - 如果有超过几百个提要,则可能应该使用 Jetty。
  • 看不到每秒发送数据与您的情况下的最小带宽有何关系。通过最小传输单元发送数据真的很重要吗?

标签: java http optimization


【解决方案1】:

您可以使用将分块的 HTTP 请求发送到事件驱动的 HTTP 服务器。

分块编码允许您在事先不知道请求正文中将传输多少数据的情况下发出 HTTP 请求。当一个新数据包准备好时,您可以发送一个新块。在服务器端,一个块的到来会触发一个新事件并且可以独立处理。这种服务器的一种选择是Node.js

如果需要加密,此解决方案也可以通过 HTTPS 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多