WebTorrent هو عميل Torrent الذي يتدفق لـ Node.js والمتصفح . نعم ، هذا صحيح. المتصفح. إنه مكتوب تمامًا في JavaScript - لغة الويب - وبالتالي فإن نفس الرمز يعمل في كلا الأوقات.
في Node.js ، هذه الوحدة هي عميل تورنت بسيط ، باستخدام TCP و UDP للتحدث إلى عملاء سيل آخرين.
في المتصفح ، يستخدم WebTorrent WEBRTC (قنوات البيانات) لنقل نظير إلى نظير. يمكن استخدامه بدون ملحقات متصفح أو ملحقات أو عمليات تثبيت. إنه مجرد JavaScript ™. ملاحظة: لا يدعم WebTorrent أقران UDP/TCP في المتصفح.
ما عليك سوى تضمين البرنامج النصي webtorrent.min.js على صفحتك لبدء جلب الملفات عبر Webrtc باستخدام بروتوكول BitTorrent ، أو import WebTorrent from 'webtorrent' مع Browserify أو WebPack. انظر التطبيقات التجريبية وأمثلة رمز أدناه.
لجعل BitTorrent يعمل على WebRTC (وهو النقل الوحيد P2P الذي يعمل على الويب) قمنا بإجراء بعض التغييرات في البروتوكول. لذلك ، لا يمكن لعميل WebTorrent المستند إلى المتصفح أو "نظير الويب" الاتصال بالعملاء الآخرين الذين يدعمون WebTorrent/Webrtc.
إلى ملفات بذرة لأقران الويب ، استخدم عميلًا يدعم WebTorrent ، على سبيل المثال WebTorrent Desktop ، عميل سطح المكتب مع واجهة مستخدم مألوفة يمكنها الاتصال بأقران الويب أو 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 Desktop.
#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 )
} )
} )هناك المزيد من الأمثلة في المستندات/gettarted.md.
يعمل WebTorrent بشكل رائع مع Browserify ، وهي حزمة NPM تتيح لك استخدام Node Style Terme () لتنظيم رمز المتصفح وتحميل وحدات التحميل المثبتة بواسطة NPM (كما هو موضح في الأمثلة السابقة).
يعمل WebTorrent أيضًا مع WebPack ، وهي مجموعة أخرى من وحدة. ومع ذلك ، يتطلب WebPack تكوينًا إضافيًا يمكنك العثور عليه في تكوين حزمة WebPack المستخدم بواسطة 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! إنه علم مجنون!
ملاحظة : للاتصال بـ "أقران الويب" (المتصفحات) بالإضافة إلى أقرانهم العاديين ، استخدم WebTorrent-Hybrid والذي يتضمن دعم Webrtc للعقدة.
WebTorrent متاح أيضًا كتطبيق سطر الأوامر. إليك كيفية استخدامه:
$ npm install webtorrent-cli -g
$ webtorrent --helpلتنزيل سيل:
$ webtorrent magnet_uriلدفق سيل على جهاز مثل 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]بالإضافة إلى Magnet Uris ، يدعم WebTorrent العديد من الطرق لتحديد سيل.
يحدث معظم التطوير النشط داخل حزم NPM الصغيرة التي تستخدمها WebTorrent.
"عندما تتم التطبيقات بشكل جيد ، فهي مجرد بقايا خاصة بالأسلوب ، والتي لا يمكن تجريدها بسهولة. جميع المكونات اللطيفة القابلة لإعادة الاستخدام تسمية على Github و NPM حيث يمكن للجميع التعاون لتحفيز المشاركات." - Substack من "كيف أكتب الوحدات"
هذه هي الوحدات الرئيسية التي تشكل WebTorrent:
| الوحدة النمطية | الاختبارات | إصدار | وصف |
|---|---|---|---|
| WebTorrent | عميل التورنت (هذه الوحدة) | ||
| bittorrent-dht | عميل جدول التجزئة الموزع | ||
| بيتورنت بيري | تحديد اسم العميل/الإصدار | ||
| bittorrent-protocol | دفق بروتوكول BitTorrent | ||
| bittorrent-tracker | BitTorrent Tracker Server/Client | ||
| BitTorrent-LSD | اكتشاف الخدمة المحلية bitTorrent | ||
| إنشاء تلم | إنشاء ملفات | ||
| المغناطيس | تحليل المغناطيس أوريس | ||
| تورنت الحاجز | معرفات التورنت | ||
| سيل الاكتشاف | ابحث عن أقرانهم عبر DHT و Tracker و LSD | ||
| ut_metadata | البيانات الوصفية لـ Magnet Uris (تمديد البروتوكول) | ||
| ut_pex | اكتشاف الأقران (امتداد البروتوكول) |
في العقدة ، قم بتمكين سجلات التصحيح عن طريق تعيين متغير بيئة DEBUG إلى اسم الوحدة النمطية التي تريد تصحيحها (على سبيل المثال bittorrent-protocol ، أو * لطباعة جميع السجلات ).
DEBUG= * webtorrentفي المتصفح ، قم بتمكين سجلات التصحيح عن طريق تشغيل هذا في وحدة التحكم المطور:
localStorage . setItem ( 'debug' , '*' )تعطيل عن طريق تشغيل هذا:
localStorage . removeItem ( 'debug' )معهد ماساتشوستس للتكنولوجيا. حقوق الطبع والنشر (C) Feross Aboukhadijeh و WebTorrent ، LLC.