http2是http协议的一个版本,http版本有1.0、1.一、2javascript
小意见 吧网络这一块学一下 仍是比较有用的 linux namespace---dockerhtml
网络服务与最终用户的一个接口。 协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP前端
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层) 格式有,JPEG、ASCll、DECOIC、加密格式等java
创建、管理、终止会话。(在五层模型里面已经合并到了应用层) 对应主机进程,指本地主机与远程主机正在进行的会话node
定义传输数据的协议端口号,以及流控和差错校验。 协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层linux
它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求一般是由像浏览器这样的接受方发起的。一个完整的Web文档一般是由不一样的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。docker
1.规定浏览器与服务器只保持短暂的链接,浏览器的每次请求都须要与服务器创建一个TCP链接。
2.没有host字段typescript
1.支持持久链接
2.增长host字段后端
二进制 HTTP帧 不是 是1那种文本了
全部的帧都以一个9字节的报头开始, 后接变长的载荷
Streamapi
nodejs v10这个版本http2变成稳定版本
舒适提示 postman paw 这类型工具可能须要2020年才能支持http2
const http2 = require('http2');
const fs = require('fs');
const server = http2.createSecureServer({
key: fs.readFileSync('localhost-privkey.pem'),
cert: fs.readFileSync('localhost-cert.pem')
});
server.on('error', (err) => console.error(err));
server.on('stream', (stream, headers) => {
// stream is a Duplex
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<h1>Hello World</h1>');
});
server.listen(8443);
复制代码
和 http不一样的是http2 改了大量的api可是保留1的支持
我写的框架msnote---koa http2 为例
import http2 from 'http2';
import querystring from 'querystring';
const request = (obj: http2.IncomingHttpHeaders) => {
return new Proxy(obj, {
get(target, key, receiver) {
switch (key) {
case 'header':
return target;
case 'method':
return target[':method'];
case 'url':
return target[':path'];
case 'query':
if(target[':path'])
return querystring.parse(target[':path']);
default:
return target;
}
},
});
};
export default request;
复制代码
大量的api 修改 不兼容koa 应为没通过测试 没法生成api 文档暂时仍是保密开发中
放一下qq群 群内 有伪音,拳击,射击,射箭,技术有 前端 后端 运维 的一个集合
qq群:895978371