使用Netty HTTP2实施支持服务器已发送事件

时间:2015-09-08 20:02:09

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

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

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

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

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

  3. 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我和Netty玩得更多了。以下是我在上述两个问题中找到的内容。

  1. 客户端和服务器都可以将流保持在“打开”状态。发送' endOfStream'发送头/数据帧时为false。为了避免在服务器端缓冲数据,我不得不调用flowController.writePendingBytes(),后跟ChannelHandlerContext.flush()'。
  2. 我已在此处上传了我的示例 - https://github.com/skssfo/http2

    1. 是的,客户端和服务器可以保持流打开并发送彼此独立的数据帧。
    2. 我第一次玩Netty,非常酷。不错的工作Netty团队!