WebTorrent เป็นไคลเอนต์ Torrent สตรีมมิ่งสำหรับ node.js และ เบราว์เซอร์ ใช่ถูกต้อง เบราว์เซอร์ มันถูกเขียนขึ้นอย่างสมบูรณ์ใน JavaScript - ภาษาของเว็บ - ดังนั้นรหัสเดียวกันจึงทำงานได้ทั้งในช่วงเวลาหนึ่ง
ใน node.js โมดูลนี้เป็นไคลเอนต์ฝนตกหนักอย่างง่ายโดยใช้ TCP และ UDP เพื่อพูดคุยกับไคลเอนต์ฝนตกหนักอื่น ๆ
ในเบราว์เซอร์ WebTorrent ใช้ WEBRTC (ช่องข้อมูล) สำหรับการขนส่งแบบเพียร์ทูเพียร์ สามารถใช้งานได้ โดยไม่ต้องใช้ ปลั๊กอินเบราว์เซอร์ส่วนขยายหรือการติดตั้ง มันเป็นแค่ JavaScript ™ หมายเหตุ: WebTorrent ไม่ รองรับ UDP/TCP Peers ในเบราว์เซอร์
เพียงรวมสคริปต์ webtorrent.min.js ในหน้าของคุณเพื่อเริ่มดึงไฟล์ผ่าน WebRTC โดยใช้โปรโตคอล Bittorrent หรือ import WebTorrent from 'webtorrent' ด้วยเบราว์เซอร์หรือ webpack ดูแอพสาธิตและตัวอย่างรหัสด้านล่าง
เพื่อให้ bittorrent ทำงานผ่าน WEBRTC (ซึ่งเป็นการขนส่ง P2P เพียงอย่างเดียวที่ใช้งานได้บนเว็บ) เราทำการเปลี่ยนแปลงโปรโตคอลบางอย่าง ดังนั้นไคลเอนต์ WebTorrent ที่ใช้เบราว์เซอร์หรือ "Web Peer" สามารถเชื่อมต่อกับไคลเอนต์อื่น ๆ ที่รองรับ WebTorrent/WebRTC เท่านั้น
ในการเพาะไฟล์ไปยังหน้าเว็บให้ใช้ไคลเอนต์ที่รองรับ webtorrent เช่นเดสก์ท็อป webtorrent ไคลเอนต์เดสก์ท็อปที่มี UI ที่คุ้นเคยซึ่งสามารถเชื่อมต่อกับเพื่อนร่วมงานเว็บ, webtorrent-hybrid, โปรแกรมบรรทัดคำสั่งหรือทันที ลูกค้า Torrent ที่จัดตั้งขึ้นเช่น Vuze ได้เพิ่มการสนับสนุน webtorrent แล้วเพื่อให้พวกเขาสามารถเชื่อมต่อกับทั้งเพื่อน และ หน้าเว็บ เราหวังว่าลูกค้ารายอื่นจะติดตาม
<video> ( webm, mkv, mp4, ogv, mov, etc (AV1, H264, HEVC*, VP8, VP9, AAC, FLAC, MP3, OPUS, Vorbis, etc) ในการติดตั้ง webtorrent สำหรับใช้ในโหนดหรือเบราว์เซอร์ที่มี import WebTorrent from 'webtorrent' , รัน:
npm install webtorrent ในการติดตั้งโปรแกรมบรรทัดคำสั่ง webtorrent ให้เรียกใช้:
npm install webtorrent-cli -gในการติดตั้งแอปพลิเคชันเดสก์ท็อป WebTorrent สำหรับ Mac, Windows หรือ Linux ดูเดสก์ท็อป WebTorrent
#webtorrent เพื่อช่วยในการพัฒนาหรือออกไปเที่ยวกับแฮ็กเกอร์วิทยาศาสตร์บ้า :)ผู้คนมากมาย!
อ่านเอกสาร API เต็มรูปแบบ
WebTorrent เป็นไคลเอนต์ BitTorrent ตัวแรกที่ทำงานในเบราว์เซอร์โดยใช้มาตรฐานเว็บแบบเปิด (ไม่มีปลั๊กอินเพียง HTML5 และ WebRTC)! เริ่มต้นได้ง่าย!
import WebTorrent from 'webtorrent'
const client = new WebTorrent ( )
const magnetURI = '...'
client . add ( magnetURI , torrent => {
// Got torrent metadata!
console . log ( 'Client is downloading:' , torrent . infoHash )
for ( const file of torrent . files ) {
document . body . append ( file . name )
}
} ) import dragDrop from 'drag-drop'
import WebTorrent from 'webtorrent'
const client = new WebTorrent ( )
// When user drops files on the browser, create a new torrent and start seeding it!
dragDrop ( 'body' , files => {
client . seed ( files , torrent => {
console . log ( 'Client is seeding:' , torrent . infoHash )
} )
} )มีตัวอย่างเพิ่มเติมในเอกสาร/เริ่มต้น MD
WebTorrent ใช้งานได้ดีกับ Browserify แพ็คเกจ NPM ที่ช่วยให้คุณใช้ Veuthle-Style สไตล์โหนด () เพื่อจัดระเบียบรหัสเบราว์เซอร์และโมดูลโหลดที่ติดตั้งโดย NPM (ดังที่เห็นในตัวอย่างก่อนหน้า)
WebTorrent ยังทำงานร่วมกับ Webpack ซึ่งเป็นอีกโมดูล Bundler อย่างไรก็ตาม WebPack ต้องการการกำหนดค่าเพิ่มเติมซึ่งคุณสามารถค้นหาได้ในการกำหนดค่า Bundle Bundle ที่ใช้โดย WebTorrent
หรือคุณสามารถใช้เวอร์ชันที่สร้างไว้ล่วงหน้าผ่าน import WebTorrent from 'webtorrent/dist/webtorrent.min.js' และข้ามการกำหนดค่า webpack
WebTorrent ยังมีอยู่ในสคริปต์แบบสแตนด์อโลน ( webtorrent.min.js ) ซึ่งแสดงให้เห็นว่ามี WebTorrent บนวัตถุ window ดังนั้นจึงสามารถใช้กับแท็กสคริปต์เพียงอย่างเดียว:
< script type =' module ' >
import WebTorrent from 'webtorrent.min.js'
</ script >สคริปต์ WebTorrent ยังโฮสต์บนโครงสร้างพื้นฐาน CDN ที่รวดเร็วและเชื่อถือได้ (CloudFlare และ MaxCDN) เพื่อการรวมง่าย ๆ ในเว็บไซต์ของคุณ:
< script type =' module ' >
import WebTorrent from 'https://esm.sh/webtorrent'
</ script > หากคุณต้องการใช้ webtorrent ในแอพ Chrome คุณสามารถรวมสคริปต์ต่อไปนี้:
< script type =' module ' >
import WebTorrent from 'webtorrent.chromeapp.js'
</ script > อย่าลืมเปิดใช้งาน chrome.sockets.udp และ chrome.sockets.tcp !
WebTorrent ยังทำงานใน node.js โดยใช้ แพ็คเกจ NPM เดียวกัน! มันเป็นวิทยาศาสตร์บ้า!
หมายเหตุ : หากต้องการเชื่อมต่อกับ "Web Peers" (เบราว์เซอร์) นอกเหนือจาก BitTorrent Peers ปกติให้ใช้ WebTorrent-Hybrid ซึ่งรวมถึงการสนับสนุน WEBRTC สำหรับโหนด
WebTorrent ยังมีอยู่เป็นแอพบรรทัดคำสั่ง นี่คือวิธีการใช้งาน:
$ npm install webtorrent-cli -g
$ webtorrent --helpเพื่อดาวน์โหลด torrent:
$ webtorrent magnet_uriในการสตรีม torrent ไปยังอุปกรณ์เช่น AirPlay หรือ Chromecast เพียงแค่ส่งธง:
$ webtorrent magnet_uri --airplayมีตัวเลือกการสตรีมที่รองรับมากมาย:
--airplay Apple TV
--chromecast Chromecast
--mplayer MPlayer
--mpv MPV
--omx [jack] omx [default: hdmi]
--vlc VLC
--xbmc XBMC
--stdout standard out [implies --quiet]นอกเหนือจากแม่เหล็ก URIS แล้ว WebTorrent ยังสนับสนุนวิธีการหลายวิธีในการระบุฝนตกหนัก
การพัฒนาที่ใช้งานส่วนใหญ่เกิดขึ้นภายในแพ็คเกจ NPM ขนาดเล็กซึ่งใช้โดย WebTorrent
"เมื่อแอปพลิเคชันทำได้ดีพวกเขาเป็นเพียงสารตกค้างที่เฉพาะเจาะจงและแอปพลิเคชันที่ไม่สามารถแยกออกได้ง่าย ๆ ส่วนประกอบที่ดีและนำกลับมาใช้ใหม่ได้ทั้งหมดลงไปใน GitHub และ NPM ซึ่งทุกคนสามารถร่วมมือกันเพื่อพัฒนาคอมมอนส์" - substack จาก "วิธีการเขียนโมดูล"
นี่คือโมดูลหลักที่ประกอบขึ้นเป็น webtorrent:
| โมดูล | การทดสอบ | รุ่น | คำอธิบาย |
|---|---|---|---|
| เกี่ยวกับ webtorrent | ไคลเอนต์ Torrent (โมดูลนี้) | ||
| Bittorrent-DHT | ไคลเอนต์แฮชตารางกระจาย | ||
| bittorrent-peerid | ระบุชื่อไคลเอนต์/เวอร์ชัน | ||
| Bittorrent-protocol | สตรีมโปรโตคอล BitTorrent | ||
| ผู้ติดตาม Bittorrent | เซิร์ฟเวอร์/ไคลเอนต์ตัวติดตาม bittorrent | ||
| Bittorrent-LSD | การค้นพบบริการท้องถิ่น BitTorrent | ||
| สร้างความมั่งคั่ง | สร้างไฟล์. torrent | ||
| แม่เหล็ก | แยกวิเคราะห์แม่เหล็ก | ||
| การตัดทอน | แยกวิเคราะห์ตัวระบุฝนตกหนัก | ||
| การค้นพบฝนตกหนัก | ค้นหาเพื่อนผ่าน DHT, Tracker และ LSD | ||
| ut_metadata | ข้อมูลเมตาสำหรับแม่เหล็ก URIS (ส่วนขยายโปรโตคอล) | ||
| ut_pex | การค้นพบเพียร์ (ส่วนขยายโปรโตคอล) |
ใน โหนด เปิดใช้งานบันทึกการดีบักโดยการตั้งค่าตัวแปรสภาพแวดล้อม DEBUG เป็นชื่อของโมดูลที่คุณต้องการแก้ไขข้อบกพร่อง (เช่น bittorrent-protocol หรือ * เพื่อพิมพ์ บันทึกทั้งหมด )
DEBUG= * webtorrentใน เบราว์เซอร์ เปิดใช้งานบันทึกการดีบักโดยเรียกใช้สิ่งนี้ในคอนโซลนักพัฒนา:
localStorage . setItem ( 'debug' , '*' )ปิดการใช้งานโดยใช้สิ่งนี้:
localStorage . removeItem ( 'debug' )MIT ลิขสิทธิ์ (c) Feross Aboukhadijeh และ WebTorrent, LLC