【发布时间】:2023-03-19 07:39:01
【问题描述】:
感谢您阅读我的问题。我阅读了许多有关 HTTP/2 的文档,并试图了解用 Java 构建 APNs 服务器端 API 的最重要概念。
- 到目前为止,我有一个用于创建 Payload 和使用 APN 启动 ssl 握手的工作代码。
- 我一直在想办法向 APN 发送推送通知,特别是向 Apple 服务器发送 HTTP/2 POST 请求。
APN 需要使用 HPACK(HTTP/2 的标头压缩),它 防止重复的标题键和值。 APNs 维护一个小的 HPACK 的动态表。帮助避免填满 APNs HPACK 表 并且需要丢弃表数据,在 以下方式——尤其是在发送大量流时:
如果我理解正确的话,我需要使用 Huffman Encoding 进行标头压缩。如果我在这方面有错误,请纠正我。
:path 值应该被编码为文字头字段,没有 索引
授权请求标头(如果存在)应编码为 没有索引的文字头字段
我为此阅读了 RFC 7541,但不知道他们在说什么。请注意,我试图通过这篇文章了解系统和要求以获取知识,而不仅仅是对具体问题的回答。
为 apns-id、apns-expiration 使用的适当编码, 和 apns-collapse-id 请求标头根据是否 是初始或后续 POST 操作的一部分,如下所示:
第一次发送这些标头时,使用增量对其进行编码 索引以允许将标题名称添加到动态表中
您随后发送这些标头,将它们编码为文字标头 没有索引的字段
当他们说“使用增量索引对它们进行编码以允许将标头名称添加到动态表中”和“随后发送这些标头时,将它们编码为不带索引的文字标头字段”是什么意思。我想理解带/不带索引的两个文字标头字段之一将有助于我更好地理解这一点。
再次感谢您阅读这个问题,请帮我解决这个问题!
【问题讨论】:
标签: java apple-push-notifications http2