Dweb:使用WebRTC/WebTorrent構建彈性Web
本文來自WebTorrent的創始人、PeerCDN聯合創始人Feross Aboukhadijeh,他介紹了一種基於WebRTC通信的Web協議WebTorrent,通過WebTorrent可以節省伺服器資源,降低成本。LiveVideoStack對原文進行了摘譯。
文 / Feross Aboukhadijeh
譯 / 元寶
審校 / Ant
原文:
https://hacks.mozilla.org/2018/08/dweb-building-a-resilient-web-with-webtorrent/
WebTorrent是一種在Web瀏覽器中運行的BitTorrent協議的實現。這種服務文件的方法意味著,網站可以與儘可能多的用戶進行擴展,同時瀏覽網站,從而消除在數據中心運行集中伺服器的成本。本文由Feross Aboukhadijeh撰寫,他是WebTorrent的創始人和PeerCDN的聯合創始人,也是一位多產的NPM模塊作者......最終統計有225個模塊!-Dietrich Ayala
什麼是WebTorrent?
WebTorrent是第一個在瀏覽器中工作的種子客戶端。它完全由JavaScript編寫,並使用WebRTC進行真正的點對點傳輸。無需瀏覽器插件,擴展或安裝。
使用開放式Web標準,WebTorrent將網站用戶連接在一起,形成分散式的和分散式的瀏覽器到瀏覽器網路,以實現高效的文件傳輸。使用基於WebTorrent的網站的人越多,它就越快,越有彈性。
架構
WebTorrent協議就像BitTorrent協議一樣,除了它使用的是WebRTC而不是TCP或uTP作為傳輸協議。
為了支持WebRTC的連接模型,我們對跟蹤器協議進行了一些更改。因此,基於瀏覽器的WebTorrent客戶端或「web peer」只能連接到支持WebTorrent / WebRTC的其他客戶端。
一旦連接對等體後,用於通信的有線協議與正常的BitTorrent就完全相同。這應該使現有流行的torrent客戶端如Transmission和uTorrent更容易添加對WebTorrent的支持。Vuze已經支持WebTorrent了!
入門
只需幾行代碼即可在瀏覽器中下載torrent!
這為窗口對象提供了一個WebTorrent函數。還有一個npm包可用。
varclient =newWebTorrent()
// Sintel, a free, Creative Commons movie
vartorrentId ="magnet:..."// Real torrent ids are much longer.
vartorrent = client.add(torrentId)
torrent.on("ready", () => {
// Torrents can contain many files. Let"s use the .mp4 file
varfile = torrent.files.find(file=>file.name.endsWith(".mp4"))
// Display the file by adding it to the DOM.
// Supports video, audio, image files, and more!
file.appendTo("body")
})
就是這樣的!現在,你將看到BT流進入到標籤為的網頁中!
更多
你可以瀏覽webtorrent.io或者在Freenode IRC或Gitter上的#webtorrent中提問來了解更多信息。我們正在尋找更多能夠在GitHub問題跟蹤器上回答問題並幫助解決問題的人。如果你是一個友善,樂於助人的人,並想乘機深入挖掘洪流協議或WebRTC,那麼這就是你的機會!


TAG:LiveVideoStack |