0

我已经用 C 语言实现了一个应用程序,它使用 nghttp2 和 openssl 与 Amazon AVS 云进行通信。我最多只能得到 65535 个字节的响应。如果响应大于 65535 字节,则应用程序无法接收其余数据并永远卡住以接收响应。如前所述,我使用 nghttp2 库进行 HTTP/2 连接。

是否需要设置任何配置才能从 AVS 云获取超过 65535 字节的数据?请帮忙。

4

2 回答 2

0

我也遇到了同样的问题,作为一种快速的解决方法,我在打开会话时通过nghttp2_option_set_no_auto_window_update(option, 1) API 禁用了 nghttp2 的自动窗口更新并调用

nghttp2_session_consume(session, stream_id, len); nghttp2_submit_window_update(会话,NGHTTP2_FLAG_NONE,stream_id,len);nghttp2_session_send(会话);

在我处理完一大块数据后,来自数据块 recv 回调。我仍然不确定为什么保持 nghttp2 的自动窗口更新功能不起作用。

于 2017-12-21T17:48:29.897 回答
0

您只能接收 65535 字节的事实听起来很像您没有正确处理 HTTP/2 流控制。

我对库的了解不够多,nghttp2无法告诉您必须做什么才能确保正确处理流控制,但是您没有nghttp2正确使用 API(例如,您忘记通知回调),或者您不要调用nghttp2必须调用的处理流控制的 API。

作为参考,您可以阅读规范中的流量控制。

于 2017-10-27T20:07:52.613 回答