結合nodejs寫框架關於http2個人理解(一)

http2是http協議的一個版本,http版本有1.0、1.一、2javascript

網絡

OSI 七層模型

小意見 吧網絡這一塊學一下 仍是比較有用的 linux namespace---dockerhtml

應用層 這個纔是http

網絡服務與最終用戶的一個接口。 協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP前端

表示層 TSL成

數據的表示、安全、壓縮。(在五層模型裏面已經合併到了應用層) 格式有,JPEG、ASCll、DECOIC、加密格式等java

會話層

創建、管理、終止會話。(在五層模型裏面已經合併到了應用層) 對應主機進程,指本地主機與遠程主機正在進行的會話node

傳輸層 TCP三次握手

定義傳輸數據的協議端口號,以及流控和差錯校驗。 協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層linux

http

它是在 Web 上進行數據交換的基礎,是一種 client-server 協議,也就是說,請求一般是由像瀏覽器這樣的接受方發起的。一個完整的Web文檔一般是由不一樣的子文檔拼接而成的,像是文本、佈局描述、圖片、視頻、腳本等等。docker

http1.0的問題

1.規定瀏覽器與服務器只保持短暫的鏈接,瀏覽器的每次請求都須要與服務器創建一個TCP鏈接。
2.沒有host字段typescript

http1.1解決了部分1.0的問題

1.支持持久鏈接
2.增長host字段後端

http2

二進制 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

http://localhost:5000/

相關文章
相關標籤/搜索