如何在AVS的http2连接上接收超过65535字节的数据?

时间:2017-10-27 16:59:13

标签: c ssl http2 alexa-voice-service nghttp2

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

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

2 个答案:

答案 0 :(得分:0)

你只能收到65535个字节的气味很像你没有正确处理HTTP / 2流量控制。

我不太了解nghttp2库,告诉您必须采取哪些措施来确保正确处理流控制,但要么您没有使用nghttp2 API正确(例如,您忘记通知回调),或者您没有调用处理您必须调用的流量控制的nghttp2 API。

作为参考,您可以阅读有关流量控制in the specification的信息。

答案 1 :(得分:0)

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

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

我完成处理一个数据块后,从数据块recv回调

。我仍然不确定为什么启用nghttp2的自动窗口更新功能不起作用。