问题标签 [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.
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 帧。
所以 。我现在该怎么办?谁能帮我吗?这将是一个很大的赞赏```
c++ - 从不同的线程执行 curl_multi_perform 导致崩溃
在我正在进行的项目中,我需要在必要时进行 GET 调用和 POST 调用。“GET”调用用于创建从服务器到设备的下行通道,以监控云服务器中发生的任何有趣事件。“POST”调用用于将数据发送到服务器。服务器有一个限制,即只需要与服务器保持一个连接。由于服务器支持 HTTP2 ,我使用“CURLMOPT_MAX_HOST_CONNECTIONS”并通过将其设置为 1 ,使 CURL 使用 1 个连接,并且我正在使用 CURLMOPT_PIPELINING 并将其设置为 CURLPIPE_MULTIPLEX ,我正在多路传输传输。问题是在第二个线程上调用“curl_multi_perform”时代码崩溃。
PS:这是我原始代码的一部分,可能无法立即编译/运行。
bash - 除非在盐状态文件中需要,否则使用建议
作为盐状态文件的一部分,我正在安装 nghttp2。
到目前为止,我的 .sls 中有以下代码
我对- unless
必要条件有点警惕,想知道是否有人有更好的方法来检查 nghttp2 尚未安装?我宁愿做一些事情来检查它是否已安装,而不仅仅是检查它是否已被下载 - 除非(双关语......有点)有人有更好的建议?
c++ - nghttp2 asio 连接到 Apple 推送通知超时
我正在使用 nghttp2_asio 连接到 Apple Push Notifications 开发人员服务。我正在尝试按照APN 指南进行操作:
在多个通知中保持与 APN 的连接处于打开状态;不要反复打开和关闭连接。APNs 将快速连接和断开连接视为拒绝服务攻击。您应该保持连接打开,除非您知道它将长时间处于空闲状态
所以我试图以一种连接不会超时的方式来编写它。但是,我的连接确实会在大约一分钟后超时。我看到为非 nghttp2_asio 发送 PING 帧,但不是为 asio 版本,正如 Apple 所说:
您可以使用 HTTP/2 PING 帧检查连接的健康状况。
如何保持与 APN 的连接?
代码
输出
php - HTTP2 和持续的 PHP 执行
运行 PHP 时,您希望它立即将 HTML 返回到浏览器,关闭连接(ish),然后继续处理......
以下内容在连接为 HTTP/1.1 时有效,但在使用Apache 2.4.25
, with mod_http2
enabled 且您拥有支持 HTTP/2 的浏览器(例如 Firefox 52 或 Chrome 57)时无效。
发生的情况Connection: close
是未发送标头。
有关此问题的类似方法,请参阅:
至于为什么要connection
删除标头,该nghttp2
库的文档(由 Apache 使用)指出:
https://github.com/nghttp2/nghttp2/blob/master/doc/programmers-guide.rst
所以如果我们不能通过这个头告诉浏览器关闭连接,我们如何让它工作呢?
或者是否有另一种方式告诉浏览器它拥有 HTML 响应的所有内容,并且它不应该一直等待更多数据到达。
c++ - 如何使用 nghttp2 在打开的蒸汽上通过一个 stream_id 发送数据,在该蒸汽之前仍然可用
我已经在这个论坛上搜索了关于 nghttp2 的内容,暂时没有找到任何有用的东西。我写了一个使用 nghttp2 与 AVS 通信的演示。是AVS。的识别器部分。在我用 AVS 安装后。服务器,我想测试AVS的识别接口。
所以在这里我发现了这里的问题: 1.首先,我使用 nghttp2_submit_request() 成功打开了 data_provider 设置的流(例如 stream_id_x )。
其次,我使用 nghttp2_submit_data( ) 发送有关此 Steam 的以下数据(例如。stream_id_x ),但它只发送第一部分消息。另一个似乎被忽略了。
我发现文档说“nghttp2_data_source_read_callback”,它的限制为 16kB,如果 *data_flags 发送一次到 NGHTTP2_DATA_FLAG_EOF。并忽略流上的以下数据(例如.stream_id_x)。我有点困惑。
有没有人遇到过这样的事情?
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 预处理器定义的情况下成功构建。
我肯定错过了一些东西,但我现在看不到什么。
谢谢您的帮助
卢卡斯
networking - http2 中带有无效控制帧的 GoAway 帧
我有一个代理服务器,它将与浏览器握手并从浏览器读取数据,然后代理服务器将连接到远程服务器并将该数据发送到远程服务器,反之亦然。
两个连接(即:浏览器到代理服务器和代理服务器到远程服务器)都使用 HTTP/2 网络协议。代理服务器与浏览器和远程服务器握手后,它将在它们之间传输所有数据。像www.nghttp2.org这样的小型网站运行良好。但是对于像facebook.com或gmail.com这样的大型网站,浏览器(chrome、firefox、safari)会在框架中抛出错误(INVALID_CONTROL_FRAME
或too large frame
) 。GOAWAY
代理服务器将隧道传输所有帧(即:HEADERS
、DATA
、WINDOW_UPDATE
等)。
在 HTTP/2 RFC 中,我读到:
两种类型的流量控制都是逐跳的,即仅在两个端点之间。中介不在依赖连接之间转发 WINDOW_UPDATE 帧
我有什么关系吗?谁能帮我找到这个错误的解决方案?
http2 - nghttp2 多部分 POST 消息
我目前正在尝试使用nghttp2
来构建多部分消息。消息的结构应如下所示。
我应该使用nghttp2_submit_request
(here)函数,nva
作为我的 HTTP/2 标头,并nghttp2_data_provider *data_prd
用于我的数据。但是,我仍然不明白如何准确地创建两条消息(带有两个消息头)。
更新:
我可以在源代码中描述我的想法吗?请看下文。在这里,我nghttp2_data_provider
用来打开一个音频文件,并写入缓冲区。
让我感到困惑的是 1)如何在音频中添加标题(更具体的消息标题)。2)如何在我的 Json 文件之后附加它。
http2 - 如何使用 nghttp2 发送多块数据?
我正在使用 nghttp2 库来格式化多部分帧以与 Alexa 通信。我目前能够通过多部分消息获得音频响应。但是,目前只能发送最大 16KB 的数据,我想对我记录的数据进行流式传输,整体上可以大于 16KB。
谁能帮助我使用 nghttp2 将块中的音频数据发送到 AVS?
期待回复,请帮忙。
谢谢。
此外,我正在从代码中添加参考函数。请忽略名称约定和其他逻辑,因为我只是在尝试这个 ruffly 以发送超过 16KB 大小的数据。
我正在使用“nghttp2_session_send”通过 send_callback 函数进行发送。每当我尝试使用超过 16KB 大小的文件时,AVS 都会回复错误“没有状态为 400 的多部分数据”。如果整个数据小于 16KB,则 alexa 将回复附加音频数据作为响应。