Bencode
A node library for encoding and decoding bencoded data, according to the BitTorrent specification.
bencode.js uses indutny/bn.js as Integer because JavaScript support only 53-bit precise integers :(
Install with npm
npm install bencode.js
Usage
var bencode = require('bencode.js')
var data = {
string: new Buffer('Hey there!'),
integer: new bencode.BN(42),
dict: { key: new Buffer('dict-key-string') },
list: [ new bencode.BN(1), new Buffer('str'), new bencode.BN(5), {}, [] ]
}
console.log(bencode.encodingLength(data))
var encoded = bencode.encode(data)
console.log(encoded.toString())
console.log(bencode.decode(encoded))
Benchmark
Torrent file for benchmark: Fedora-Live-MATE_Compiz-x86_64-23.torrent
$ cd benchmark
$ npm i
...
$ npm start
decode
33,311 op/s » bencode
34,559 op/s » bencode.js
23,026 op/s » bencoding
33,448 op/s » dht_bencode
546 op/s » bncode
27,194 op/s » dht
encode
11,413 op/s » bencode
11,562 op/s » bencode.js
6,444 op/s » bencoding
8,108 op/s » dht_bencode
5,586 op/s » bncode
10,278 op/s » dht
License
MIT