成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯]當(dāng) Node.js Core 遇到 HTTP/2

Yuanf / 3396人閱讀

摘要:幾分鐘前我打開了一個(gè),它為提供了初始的實(shí)現(xiàn)。雖然還不堪用,但對(duì)來說是一個(gè)重要的里程碑。首先你需要跟著這個(gè)介紹來配置好的構(gòu)建環(huán)境。我們付出的越多,就會(huì)變的越好。

原文:Say hello to HTTP/2 for Node.js Core

第一次嘗試翻譯文章,如果有翻譯的不好或者有錯(cuò)誤的地方還望大佬們指點(diǎn)一二,謝謝。

幾分鐘前我打開了一個(gè) pull-request,它為 Nodejs Core 提供了初始的 HTTP/2 實(shí)現(xiàn)。雖然還不堪用,但對(duì) Node.js 來說是一個(gè)重要的里程碑。

因?yàn)檫@只是一個(gè)pull-request,你要想和它愉快的玩耍的話需要做好下面這些準(zhǔn)備工作。

首先你需要跟著這個(gè)介紹來配置好 Node.js 的構(gòu)建環(huán)境。

然后切換到 initial-pr 分支:

$ git clone https://github.com/jasnell/node
$ git checkout initial-pr

然后開始構(gòu)建:

$ ./configure
$ make -j8

構(gòu)建需要小一會(huì)兒時(shí)間,你可以先去覓個(gè)食等待構(gòu)建完畢。

構(gòu)建完成之后,隨手幾行代碼就可以開一個(gè) HTTP/2 的服務(wù)了:

const http2 = require("http2");
const server = http2.createServer();
server.on("stream", (stream, requestHeaders) => {
  stream.respond({ ":status": 200, "content-type": "text/plain" });
  stream.write("hello ");
  stream.end("world");
});
server.listen(8000);

由于現(xiàn)在這個(gè) HTTP/2 還處在實(shí)驗(yàn)階段,所以你在運(yùn)行上面代碼的時(shí)候需要加上一個(gè) --expose-http2 參數(shù):

$ node --expose-http2 h2server.js

需要注意的是,上面啟動(dòng)的服務(wù)是一個(gè)明文 TCP 連接,而瀏覽器對(duì)于使用 HTTP/2 協(xié)議的要求是必須使用 TLS。然而我們可以開一個(gè)簡單的 HTTP/2 客戶端來達(dá)到目的:

const http2 = require("http2");
const client = http2.connect("http://localhost:8000");
const req = client.request({ ":method": "GET", ":path": "/" });
req.on("response", (responseHeaders) => {
  // do something with the headers
});
req.on("data", (chunk) => {
  // do something with the data
});
req.on("end", () => client.destroy());

設(shè)置好一個(gè)開啟 TLS 的 HTTP/2 服務(wù)只需要額外的幾個(gè)步驟:

const http2 = require("http2");
const options = {
  key: getKeySomehow(),
  cert: getCertSomehow()
};
const server = http2.createSecureServer(options);
server.on("stream", (stream, requestHeaders) => {
  stream.respond();
  stream.end("secured hello world!");
});
server.listen(43);

你可以到 文檔 中獲取更多有關(guān) tls.createServer() 參數(shù)里的 keycert 的使用說明。

盡管現(xiàn)在還有很多的細(xì)節(jié)需要處理,還有很多的問題需要修復(fù),但是這個(gè)最初的實(shí)現(xiàn)已經(jīng)提供了足夠多的功能了,包括:

支持推流(Push Stream)

respondWithFile() 和 respondWithFD() 可以高效的繞過 Stream API 發(fā)送原始文件數(shù)據(jù)

支持 TLS 和 明文連接

完全支持多路復(fù)用的流(stream multiplexing)

支持 HTTP/2 的優(yōu)先級(jí)(Prioritization)和流量控制(Flow Control)

支持 HTTP/2 Trailer 頭

支持 HPACK 頭壓縮

盡可能接近當(dāng)前 HTTP/1 API 的 API 兼容層

開發(fā)將會(huì)繼續(xù)進(jìn)行,例如安全性加強(qiáng)、性能優(yōu)化和 API 優(yōu)化。我們付出的越多,Node.js 就會(huì)變的越好。

祝大家復(fù)用愉快。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84190.html

相關(guān)文章

  • 正在失業(yè)中的《課多周刊》(第3期)

    摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時(shí)一運(yùn)維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...

    robin 評(píng)論0 收藏0
  • 正在失業(yè)中的《課多周刊》(第3期)

    摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時(shí)一運(yùn)維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...

    Joyven 評(píng)論0 收藏0
  • []Express在生產(chǎn)環(huán)境下的最佳實(shí)踐 - 性能和可靠性

    摘要:前言這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑應(yīng)用的最佳實(shí)踐。第一部分會(huì)關(guān)注安全性,第二部分則會(huì)關(guān)注性能和可靠性。關(guān)于第一部分,請參閱在生產(chǎn)環(huán)境下的最佳實(shí)踐安全性。 前言 這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑Express應(yīng)用的最佳實(shí)踐。第一部分會(huì)關(guān)注安全性,第二部分則會(huì)關(guān)注性能和可靠性。當(dāng)你讀這篇文章時(shí),會(huì)假設(shè)你已經(jīng)對(duì)Node.js和web開發(fā)有所了解,并且對(duì)生產(chǎn)環(huán)...

    Luosunce 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<