bittorrent-udp-tracker v1.2.0
Bittorrent Udp Tracker
udp tracker implementation for bittorrent.
Features
Installation
npm i bittorrent-udp-tracker --save
Test
npm test
Usage
var UdpTracker = require('bittorrent-udp-tracker')
var udpTracker = new UdpTracker(new Buffer('01234567890123456789'), new Buffer('12345678901234567890'), announceUrl, {'port': 1234})
udpTracker.announce(2, {
downloaded: 0,
left: 0,
uploaded: 0
})
udpTracker.on('error', function (err) {
throw new Error(err)
})
udpTracker.on('update', function (msg) {
console.log(msg)
udpTracker.destory()
})
update
event will return json stringified object. It will have following format
{
leechers: 12,
seeds: 12,
peers: ['10.12.12.12.:1234', '109.12.90.15.:1234']
}
error
event will return error message.
API
new UdpTracker(peerId, infoHash, opts)
It will return instance of UdpTracker.It is also instance of
EventEmitter
.var udpTracker = new UdpTracker(new Buffer('01234567890123456789'), new Buffer('12345678901234567890'), announceUrl, {'port': 1234})
- peerId: unique Id for peer (20 bytes)
- infoHash: infoHash for torrent (20 bytes)
- opts:
{ port: (16 bytes), _timeout: timeout for announce try in miliseconds }
udpTracker.announce(event, opts)
announce event to tracker
event
: event type to announcenone = 0 completed = 1 started = 2 stopped = 3
opts
: announce options to send following are consider,downloaded
: 8 bytes longleft
: 8 bytes longuploaded
: 8 byte long
udpTracker.destroy()
stop sending
announce
request to trackers.
TODO
following things need to implement.
- udp tracker timeout
- announce interval handling
- implement scraping
- support IP6
- implement extensions
- authentication
- request string
Implementation Details
Time outs
bittorrent udp tracker timeout specification is implemented
Announce Interval
announce response sends interval (in second) which says do not send another announce request before interval. So even you called
announce
we do not send announce request immediately instead we wait till interval time is over. After Interval time is over we send announce request with most recent announce request options.Stoping Tracker
As announce return interval to make new announce request.We keep making announce request. To stop tracker you have to call explicitly
destory()
api
Inspiration
This module Inspiration is taken from feross's bittorrent-tracker modules's file. udp-tracker.js.
Contributions
please create issue if you are having problem with module.
License
MIT