摘要:幾分鐘前我打開了一個,它為提供了初始的實現(xiàn)。雖然還不堪用,但對來說是一個重要的里程碑。首先你需要跟著這個介紹來配置好的構(gòu)建環(huán)境。我們付出的越多,就會變的越好。
原文:Say hello to HTTP/2 for Node.js Core
第一次嘗試翻譯文章,如果有翻譯的不好或者有錯誤的地方還望大佬們指點一二,謝謝。
幾分鐘前我打開了一個 pull-request,它為 Nodejs Core 提供了初始的 HTTP/2 實現(xiàn)。雖然還不堪用,但對 Node.js 來說是一個重要的里程碑。
因為這只是一個pull-request,你要想和它愉快的玩耍的話需要做好下面這些準備工作。
首先你需要跟著這個介紹來配置好 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)建需要小一會兒時間,你可以先去覓個食等待構(gòu)建完畢。
構(gòu)建完成之后,隨手幾行代碼就可以開一個 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)在這個 HTTP/2 還處在實驗階段,所以你在運行上面代碼的時候需要加上一個 --expose-http2 參數(shù):
$ node --expose-http2 h2server.js
需要注意的是,上面啟動的服務(wù)是一個明文 TCP 連接,而瀏覽器對于使用 HTTP/2 協(xié)議的要求是必須使用 TLS。然而我們可以開一個簡單的 HTTP/2 客戶端來達到目的:
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è)置好一個開啟 TLS 的 HTTP/2 服務(wù)只需要額外的幾個步驟:
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ù)里的 key 和 cert 的使用說明。
盡管現(xiàn)在還有很多的細節(jié)需要處理,還有很多的問題需要修復(fù),但是這個最初的實現(xiàn)已經(jīng)提供了足夠多的功能了,包括:
支持推流(Push Stream)
respondWithFile() 和 respondWithFD() 可以高效的繞過 Stream API 發(fā)送原始文件數(shù)據(jù)
支持 TLS 和 明文連接
完全支持多路復(fù)用的流(stream multiplexing)
支持 HTTP/2 的優(yōu)先級(Prioritization)和流量控制(Flow Control)
支持 HTTP/2 Trailer 頭
支持 HPACK 頭壓縮
盡可能接近當前 HTTP/1 API 的 API 兼容層
開發(fā)將會繼續(xù)進行,例如安全性加強、性能優(yōu)化和 API 優(yōu)化。我們付出的越多,Node.js 就會變的越好。
祝大家復(fù)用愉快。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/84190.html
摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號,更多精彩內(nèi)容皆在微信公眾號,歡迎關(guān)注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時一運維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號:fed-talk,更多精彩內(nèi)容皆在微信公眾號,歡迎關(guān)注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...
摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號,更多精彩內(nèi)容皆在微信公眾號,歡迎關(guān)注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時一運維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號:fed-talk,更多精彩內(nèi)容皆在微信公眾號,歡迎關(guān)注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...
摘要:前言這將是一個分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑應(yīng)用的最佳實踐。第一部分會關(guān)注安全性,第二部分則會關(guān)注性能和可靠性。關(guān)于第一部分,請參閱在生產(chǎn)環(huán)境下的最佳實踐安全性。 前言 這將是一個分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑Express應(yīng)用的最佳實踐。第一部分會關(guān)注安全性,第二部分則會關(guān)注性能和可靠性。當你讀這篇文章時,會假設(shè)你已經(jīng)對Node.js和web開發(fā)有所了解,并且對生產(chǎn)環(huán)...
閱讀 1607·2023-04-25 17:18
閱讀 1947·2021-10-27 14:18
閱讀 2192·2021-09-09 09:33
閱讀 1891·2019-08-30 15:55
閱讀 2085·2019-08-30 15:53
閱讀 3497·2019-08-29 16:17
閱讀 3486·2019-08-26 13:57
閱讀 1791·2019-08-26 13:46