社区首页 >问答首页 >WINDOW_UPDATE HTTP/2帧

WINDOW_UPDATE HTTP/2帧
EN

Stack Overflow用户
提问于 2018-07-26 04:02:09
回答 2查看 4K关注 0票数 4

WINDOW_UPDATE帧应该在什么频率下由接收器发送?我有测试HTTP/2客户端,它建立HTTP/2与HTTP/2服务器和做魔术,SETTNGS框架(64K窗口大小)交换。现在,客户端无法向服务器发送超过64K大小的数据。

EN

回答 2

Stack Overflow用户

发布于 2018-07-26 10:17:27

WINDOW_UPDATE帧应该在什么频率下由接收器发送?

无论接收者决定什么频率。您不需要确认每条消息,但也不应该等到整个窗口都用完了。

Nghttp (一个流行的HTTP/2库、服务器和客户端),例如在50%的窗口已用完时发送

代码语言:javascript
代码运行次数:0
复制
int nghttp2_should_send_window_update(int32_t local_window_size,
                                      int32_t recv_window_size) {
  return recv_window_size > 0 && recv_window_size >= local_window_size / 2;
}

我有测试HTTP/2客户端,它建立HTTP/2与HTTP/2服务器和做魔术,SETTNGS框架(64K窗口大小)交换。现在,客户端无法向服务器发送超过64K大小的数据。

如果服务器没有发送WINDOWS_UPDATE帧以允许客户端发送更多数据,我并不感到惊讶。这就是WINDOWS_UPDATE框架的要点--避免淹没一个无法跟上的政党。但是,应该由接收方(本例中的服务器)发送WINDOWS_UPDATE帧,以告诉客户端它能够发送更多内容。因此,如果您只使用HTTP/2客户端进行测试,则这不在您的控制范围之内。

票数 1
EN

Stack Overflow用户

发布于 2018-07-26 04:24:46

根据HTTP2规范,需要发送WINDOW_UPDATE帧来调整发送窗口。这里描述了初始状态:

当首次建立HTTP/2连接时,将创建初始流控制窗口大小为65,535辛特的新流。连接流控制窗口也是65,535个八位数。两个端点都可以通过在构成连接序言部分的设置框架中包含SETTINGS_INITIAL_WINDOW_SIZE值来调整新流的初始窗口大小。连接流控制窗口只能使用WINDOW_UPDATE帧进行更改.

根据我对规范的解读,在耗尽窗口缓冲区时,您需要发送一个WINDOOW_UPDATE。在一个示例中对此进行了如下描述:

例如,如果客户端在连接建立时立即发送60 KB,而服务器将初始窗口大小设置为16 KB,客户端将在收到设置帧时重新计算可用的流控制窗口为-44 KB。客户端保留一个负流控制窗口,直到WINDOW_UPDATE框架将窗口恢复为正,然后客户端可以继续发送。

因此,作为发送方,您需要随时调整窗口缓冲区大小,否则就会耗尽窗口缓冲区。您需要跟踪发送的数据以及当前窗口缓冲区大小,并相应地跟踪发送window _UPDATE。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51538391

复制
相关文章
如何配置Seata以便与应用程序集成?
Seata是一款开源的分布式事务解决方案,可以为分布式应用程序提供事务管理和协调功能。为了实现Seata与应用程序的集成,需要进行如下几个步骤:
用户1289394
2023/09/11
3010
如何配置Seata以便与应用程序集成?
页面参数传递
在doctor_ask.html页面,把在url中的参数取下来,要使用一个方法getQueryString(),其中有一个方法是用来获取url中含有中文参数的:
一觉睡到小时候
2019/07/03
3.2K0
Angular2 页面的生命周期
当被绑定的输入属性的值发生变化时调用,首次调用一定会发生在 ngOnInit之前。
用户1437675
2018/08/20
6980
错误页面定制与视图传递多个参数
一、错误页面定制 视图函数 <span class="hljs-meta">@app.errorhandler(404)</span> <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">page_not_found</span><span class="hljs-params">(e)</span>:</span> <span class="hljs-keyword">
星哥玩云
2022/09/14
1K0
利用fluorineFx将DataTable从.Net传递到Flash
FluorineFx自带的示例都不错,就是有点不简洁,下面的代码基本上已经最简版了(环境vs2010) 1、先创建一个Web Application,然后添加FluorineFx以及FluorineFx.ServiceBrowser的引用 这二个程序集的默认位置在: C:\Program Files (x86)\FluorineFx\Bin\net\3.5\FluorineFx.dll C:\Program Files (x86)\FluorineFx\Bin\net\3.5\FluorineFx.Serv
菩提树下的杨过
2018/01/23
2.4K0
利用fluorineFx将DataTable从.Net传递到Flash
使用Helm将应用程序部署到IBM Cloud上的Kubernetes
Helm是Kubernetes的包管理器。借助Helm,您可以非常方便地将应用程序,工具和数据库(如MongoDB,PostgreSQL,WordPress和Apache Spark)部署到您自己的Kubernetes集群中。以下简要介绍如何将Helm用于IBM Cloud Container服务。
johnniang
2018/01/15
2K0
使用Helm将应用程序部署到IBM Cloud上的Kubernetes
本文介绍了如何使用Helm将应用程序部署到IBM Cloud上的Kubernetes,包括详细的步骤和示例。
Techeek
2018/01/08
1.6K0
angular2 路由之间的页面跳转
angular2路由页面之间的跳转, 只需要在需要跳转的ts文件中引入 import {Router} from '@angular/router'; 然后在 constructor(public router:Router) { } 定义好router,这样就可以使用Router中的属性了 doJump(){     this.router.navigate(['/index'])//跳转到新的路由页面 } so easy吧!
杭州前端工程师
2018/06/15
3.3K0
如何将Redux与React Hooks一起使用
React Redux在2019年6月11日发布的7.1版中提供了对Hooks的支持。这意味着我们可以在函数组件中将Redux与Hooks一起使用,而不是使用高阶组件(HOC)。
前端知否
2020/03/23
7K0
如何将Redux与React Hooks一起使用
将Spring Boot应用程序部署到Bluemix
在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署到IBM Bluemix。作为例子,我再次使用Spring REST示例。在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署到IBM Bluemix。作为例子,我再次使用Spring REST示例。
FLYMOTH
2018/01/15
2.5K0
将Spring Boot应用程序部署到Bluemix
将Spring Boot应用程序部署到Bluemix
在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署到IBM Bluemix。我会再次使用S
johnniang
2018/01/08
2.4K0
将Spring Boot应用程序部署到Bluemix
将Spring Boot应用程序部署到Bluemix
在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署到IBM Bluemix。我将再次使用S
电工昌威
2018/01/05
2.4K0
将Spring Boot应用程序部署到Bluemix
Angular2 组件(页面)之间如何传值
在Angular 2中,数据和事件变化检测从上到下发生从<b>父级到子级。</b>
用户1437675
2018/08/20
4K0
Angular2 组件(页面)之间如何传值
使用Helm将应用程序部署到IBM Cloud上的Kubernetes上
本文介绍了如何使用Helm将应用程序部署到IBM Cloud上的Kubernetes集群中。首先介绍了Helm的作用和如何使用Helm部署应用程序,然后详细说明了如何在IBM Cloud上使用Helm部署MongoDB。最后,提供了如何获取IP地址和端口的示例。
shaonbean
2018/01/09
1.3K0
将WordPress发布到静态GitLab页面站点
通过 GitLab 或 GitHub Pages 来提供一个 WordPress 镜像站点, 从而最小化安全问题。
星哥玩云
2022/07/14
6510
Angular2 VS Angular4 深度对比:特性、性能
在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。
葡萄城控件
2022/05/09
8.7K0
Angular2 VS Angular4 深度对比:特性、性能
将windows应用程序注册为windows服务
@echo off ::设置服务名称 set service_name=ServiceManagement ::设置服务描述 set service_description=文件安全上传服务 ::设置服务程序路径 set prog_path=%cd:\=\\%\\ServiceManagement.exe ::设置服务的启动方式 auto:自动 demand:手动 disabled:禁用 set strt=auto echo EasyService 一键服务 echo =========================================================== ::pause ::======================以下部分勿随意修改========================== set s32=%cd%\system32 set reg_file=EasyService.reg net stop %service_name% 2>nul
FreeTimeWorker
2020/08/31
1.4K0
Meteor 微信公共号开发将客户端日志传递到服务端打印
因为在微信客户端环境,我们无法使用 console.log 查看前端显示的一些调试信息,如果需要用到调试,我们一般是使用 Session 方法来给前端一个固定专门显示日志的变量设定属性,这样这个固定的变量会跟随 Session.set 设定的值而变化。后面想了一个比较方便的办法,直接将客户端需要输出的日志信息通过 Meteor.call 发送到服务端打印我们就可以方便的在服务端一起看到server log 和 client log 了。
我与梦想有个约会
2023/10/20
1870
Meteor 微信公共号开发将客户端日志传递到服务端打印
将静态页面部署到github.io
  我的腾讯云服务器是之前利用学生身份(有优惠)买的,现在快到期了,而且服务器上面只有一个引导页(静态页面)还有用,别的项目都没有用了。所以就想找一种不花钱买服务器就可以访问到我的引导页的方法。然后突然间想到了之前小伙伴说过hexo写博客非常方便而且是托管到github上的,我就想能不能用类似的方法把自己的静态页面也托管到github上。
lin_zone
2019/09/24
1.6K0
点击加载更多

相似问题

将参数传递给服务以便与$http.get()一起使用

32

如何将文件传递到Docker容器以便与容器一起使用?

15

将.vue发布到npm以便与browserify一起使用

11

将javascript变量传递给PHP以便与Google一起使用

15

将值从服务传递到组件(Angular2)

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文