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