【问题标题】:Supporting Server Sent Events with Netty HTTP2 implementation使用 Netty HTTP2 实现支持服务器发送事件
【发布时间】:2015-12-04 15:22:28
【问题描述】:

我使用的是 Netty 4.1-Beta6 版本。

我想支持 HTTP2 服务器应该能够在现有连接上将事件推送到 HTTP2 客户端的用例 - 这可能是来自云端的警报或计时器事件,需要传播到客户端。

  1. 我正在考虑使用“服务器发送事件”功能 - 是否可以在 Netty 中使用 HTTP2 执行此操作,如果可以,如何操作?我是否应该通过发送将“最终帧”标志设置为 false 的数据帧来保持 http2 流打开?当我尝试这个时,我观察到内容被缓冲了。我写的时候数据框没有到达客户端。我正在使用 DefaultHttp2Encoder。我也尝试将“Transfer-Encoding”标头设置为“chunked”。

  2. 相关问题 - 一旦流处于“打开”状态,HTTP2 是否允许双向数据帧?这个想法是服务器应该能够从客户端询问数据,并且客户端应该能够用同一流中的数据进行响应(一旦建立流,客户端/服务器角色的反转)。这可能吗?

提前感谢您的帮助。

【问题讨论】:

    标签: html netty server-sent-events spdy http2


    【解决方案1】:

    我和 Netty 玩得更多了。这是我对上述 2 个问题的发现。

    1. 客户端和服务器都可以通过在发送标头/数据帧时将“endOfStream”发送为假来保持流处于“打开”状态。为了避免在服务器端缓冲数据,我不得不调用 flowController.writePendingBytes(),然后调用 ChannelHandlerContext.flush()'。

    我已经在这里上传了我的示例 - https://github.com/skssfo/http2

    1. 是的,客户端和服务器可以保持流打开并相互独立地发送数据帧。

    我是第一次玩Netty,很酷。干得好 Netty 团队!

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2015-06-03
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      相关资源
      最近更新 更多