问题标签 [nghttp2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
222 浏览

c++ - nghttp2如何建立下载通道?(c/c++) (AVS)

在我检查了 AVS 迁移的文档后(https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/docs/migration-guide

我在 ssl 连接完成后使用“nghttp2_submit_request”发出请求,该请求将发送 HEADER 帧。数据如下:

:方法:获取

:方案:https

:路径:/v20160207/directives

授权:承载 {{access_token}}

我发现了这个:

如果 {{access_token}} 无效,它将响应一个 json 格式的字符串:

{"header":{"namespace":"System","name":"Exception","messageId":"83e5e334-5470-43c4-86d7-be5cbc19a4bd"},"payload":{"code":"UNAUTHORIZED_REQUEST_EXCEPTION ","description":"无法验证请求。请提供有效的授权令牌。"}}

但如果 {{access_token}} 有效,它将响应一个 GOAWAY 帧。

所以 。我现在该怎么办?谁能帮我吗?这将是一个很大的赞赏```

0 投票
0 回答
1930 浏览

c++ - 从不同的线程执行 curl_multi_perform 导致崩溃

在我正在进行的项目中,我需要在必要时进行 GET 调用和 POST 调用。“GET”调用用于创建从服务器到设备的下行通道,以监控云服务器中发生的任何有趣事件。“POST”调用用于将数据发送到服务器。服务器有一个限制,即只需要与服务器保持一个连接。由于服务器支持 HTTP2 ,我使用“CURLMOPT_MAX_HOST_CONNECTIONS”并通过将其设置为 1 ,使 CURL 使用 1 个连接,并且我正在使用 CURLMOPT_PIPELINING 并将其设置为 CURLPIPE_MULTIPLEX ,我正在多路传输传输。问题是在第二个线程上调用“curl_multi_perform”时代码崩溃。

PS:这是我原始代码的一部分,可能无法立即编译/运行。

0 投票
1 回答
436 浏览

bash - 除非在盐状态文件中需要,否则使用建议

作为盐状态文件的一部分,我正在安装 nghttp2。

到目前为止,我的 .sls 中有以下代码

我对- unless必要条件有点警惕,想知道是否有人有更好的方法来检查 nghttp2 尚未安装?我宁愿做一些事情来检查它是否已安装,而不仅仅是检查它是否已被下载 - 除非(双关语......有点)有人有更好的建议?

0 投票
1 回答
848 浏览

c++ - nghttp2 asio 连接到 Apple 推送通知超时

我正在使用 nghttp2_asio 连接到 Apple Push Notifications 开发人员服务。我正在尝试按照APN 指南进行操作

在多个通知中保持与 APN 的连接处于打开状态;不要反复打开和关闭连接。APNs 将快速连接和断开连接视为拒绝服务攻击。您应该保持连接打开,除非您知道它将长时间处于空闲状态

所以我试图以一种连接不会超时的方式来编写它。但是,我的连接确实会在大约一分钟后超时。我看到为非 nghttp2_asio 发送 PING 帧,但不是为 asio 版本,正如 Apple 所说:

您可以使用 HTTP/2 PING 帧检查连接的健康状况。

如何保持与 APN 的连接?

代码

输出

0 投票
2 回答
1675 浏览

php - HTTP2 和持续的 PHP 执行

运行 PHP 时,您希望它立即将 HTML 返回到浏览器,关闭连接(ish),然后继续处理......

以下内容在连接为 HTTP/1.1 时有效,但在使用Apache 2.4.25, with mod_http2enabled 且您拥有支持 HTTP/2 的浏览器(例如 Firefox 52 或 Chrome 57)时无效。

发生的情况Connection: close是未发送标头。


有关此问题的类似方法,请参阅:

  1. 尽早关闭连接
  2. 关闭连接后继续处理
  3. 连接关闭后继续 php 脚本

至于为什么要connection删除标头,该nghttp2库的文档(由 Apache 使用)指出:

https://github.com/nghttp2/nghttp2/blob/master/doc/programmers-guide.rst


所以如果我们不能通过这个头告诉浏览器关闭连接,我们如何让它工作呢?

或者是否有另一种方式告诉浏览器它拥有 HTML 响应的所有内容,并且它不应该一直等待更多数据到达。

0 投票
0 回答
200 浏览

c++ - 如何使用 nghttp2 在打开的蒸汽上通过一个 stream_id 发送数据,在该蒸汽之前仍然可用

我已经在这个论坛上搜索了关于 nghttp2 的内容,暂时没有找到任何有用的东西。我写了一个使用 nghttp2 与 AVS 通信的演示。是AVS。的识别器部分。在我用 AVS 安装后。服务器,我想测试AVS的识别接口。

所以在这里我发现了这里的问题: 1.首先,我使用 nghttp2_submit_request() 成功打开了 data_provider 设置的流(例如 stream_id_x )。

  1. 其次,我使用 nghttp2_submit_data( ) 发送有关此 Steam 的以下数据(例如。stream_id_x ),但它只发送第一部分消息。另一个似乎被忽略了。

    我发现文档说“nghttp2_data_source_read_callback”,它的限制为 16kB,如果 *data_flags 发送一次到 NGHTTP2_DATA_FLAG_EOF。并忽略流上的以下数据(例如.stream_id_x)。我有点困惑。

有没有人遇到过这样的事情?

0 投票
0 回答
484 浏览

c++ - Libcurl windows build VS2015 OpenSSL HTTP2

我目前正在尝试使用 Visual Studio 2015 在 Windows 10 上使用 OpenSSL 和 HTTP2 构建 Libcurl 7.54.0,我在编译结束时在构建日志中收到这些错误:

根据我计算机上的 OpenSSL 和 nghttp2 路径,我在 curl 和 libcurl 项目中添加了以下内容:我已将以下文件夹添加到我的附加库目录中(curl 项目->属性->配置属性->链接器->通用->附加库目录):

并为 curl 和 libcurl 项目附加包含目录(项目->properties->configuration properties->c/c++->general->additionnal 包含目录)添加:

我还在两个项目预处理器定义(两个项目->属性->配置属性->C/C++->预处理器->预处理器定义)中添加了 USE_NGHTTP2 的定义,以便使用 nghttp2 进行编译。

最后,我正在使用目标平台 Win32 的配置“LIB Release - DLL OpenSSL”进行构建。

编辑:这个问题似乎与 nghttp2 有关,因为我在没有 NGHTTP2 预处理器定义的情况下成功构建。

我肯定错过了一些东西,但我现在看不到什么。

谢谢您的帮助

卢卡斯

0 投票
0 回答
289 浏览

networking - http2 中带有无效控制帧的 GoAway 帧

我有一个代理服务器,它将与浏览器握手并从浏览器读取数据,然后代理服务器将连接到远程服务器并将该数据发送到远程服务器,反之亦然。

两个连接(即:浏览器到代理服务器和代理服务器到远程服务器)都使用 HTTP/2 网络协议。代理服务器与浏览器和远程服务器握手后,它将在它们之间传输所有数据。像www.nghttp2.org这样的小型网站运行良好。但是对于像facebook.comgmail.com这样的大型网站,浏览器(chrome、firefox、safari)会在框架中抛出错误(INVALID_CONTROL_FRAMEtoo large frame) 。GOAWAY代理服务器将隧道传输所有帧(即:HEADERSDATAWINDOW_UPDATE等)。

在 HTTP/2 RFC 中,我读到:

两种类型的流量控制都是逐跳的,即仅在两个端点之间。中介不在依赖连接之间转发 WINDOW_UPDATE 帧

我有什么关系吗?谁能帮我找到这个错误的解决方案?

0 投票
1 回答
1583 浏览

http2 - nghttp2 多部分 POST 消息

我目前正在尝试使用nghttp2来构建多部分消息。消息的结构应如下所示。

在此处输入图像描述

我应该使用nghttp2_submit_request(here)函数,nva作为我的 HTTP/2 标头,并nghttp2_data_provider *data_prd用于我的数据。但是,我仍然不明白如何准确地创建两条消息(带有两个消息头)。


更新:

我可以在源代码中描述我的想法吗?请看下文。在这里,我nghttp2_data_provider用来打开一个音频文件,并写入缓冲区。

让我感到困惑的是 1)如何在音频中添加标题(更具体的消息标题)。2)如何在我的 Json 文件之后附加它。

0 投票
1 回答
541 浏览

http2 - 如何使用 nghttp2 发送多块数据?

我正在使用 nghttp2 库来格式化多部分帧以与 Alexa 通信。我目前能够通过多部分消息获得音频响应。但是,目前只能发送最大 16KB 的数据,我想对我记录的数据进行流式传输,整体上可以大于 16KB。

谁能帮助我使用 nghttp2 将块中的音频数据发送到 AVS?

期待回复,请帮忙。

谢谢。

此外,我正在从代码中添加参考函数。请忽略名称约定和其他逻辑,因为我只是在尝试这个 ruffly 以发送超过 16KB 大小的数据。

我正在使用“nghttp2_session_send”通过 send_callback 函数进行发送。每当我尝试使用超过 16KB 大小的文件时,AVS 都会回复错误“没有状态为 400 的多部分数据”。如果整个数据小于 16KB,则 alexa 将回复附加音频数据作为响应。