udp tracker implementation for bittorrent.
npm i bittorrent-udp-tracker --save
npm test
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.
-
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 }
announce event to tracker
event
: event type to announce
none = 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
stop sending announce
request to trackers.
following things need to implement.
- udp tracker timeout
- announce interval handling
- implement scraping
- support IP6
- implement extensions
- authentication
- request string
bittorrent udp tracker timeout specification is implemented
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.
As announce return interval to make new announce request.We keep making announce request. To stop tracker you have to call explicitly destory()
api
This module Inspiration is taken from feross's bittorrent-tracker modules's file. udp-tracker.js.
please create issue if you are having problem with module.
MIT