mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 09:45:31 +00:00
add documents/testing-aquatic-ws.md
This commit is contained in:
parent
fbe0400ed8
commit
25f3857340
1 changed files with 129 additions and 0 deletions
129
documents/testing-aquatic-ws.md
Normal file
129
documents/testing-aquatic-ws.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# Working procedure for testing file transfer with aquatic_ws
|
||||
|
||||
- On VPS, create identity (using real certificate), run tracker with TLS
|
||||
- On VPS, create torrent with external url as announce. Edit file and put
|
||||
external url not only as announce, but in announce list too.
|
||||
- On VPS, disallow traffic to other trackers by adding them to /etc/hosts
|
||||
or maybe with firewall, since webtorrent-hybrid adds its own trackers
|
||||
willy-nilly. To get a list of the tracker urls which are actually used,
|
||||
the node application under heading "Seed application" can be used as a
|
||||
starting point.
|
||||
- I opened the listening port in the VPS firewall too (this might not be
|
||||
necessary if running both clients on the VPS, see below)
|
||||
- On VPS, run webtorrent-hybrid download --keep-seeding ./abc.torrent
|
||||
- On desktop/non-VPS computer, fetch torrent file, run
|
||||
webtorrent-hybrid download ./abc.torrent
|
||||
I actually got it to work running this client on the VPS too.
|
||||
|
||||
## Seed application
|
||||
|
||||
```js
|
||||
// Start webtorrent seeder from data file, create torrent, write it to file,
|
||||
// output info
|
||||
|
||||
var WebTorrent = require('webtorrent-hybrid')
|
||||
var fs = require('fs')
|
||||
|
||||
// WebTorrent seems to use same peer id for different
|
||||
// clients in some cases (I don't know how)
|
||||
peerId = "ae61b6f4a5be4ada48333891512db5e90347d736"
|
||||
announceUrl = 'ws://127.0.0.1:3000'
|
||||
dataFile = './files-seed/ws-ipv4'
|
||||
torrentFile = './torrents/ws-ipv4.torrent'
|
||||
|
||||
function createSeeder(){
|
||||
console.log('creating seeder..')
|
||||
|
||||
var seeder = new WebTorrent({ dht: false, webSeeds: false, peerId: peerId })
|
||||
seeder.on('error', function(err) {
|
||||
console.log('seeder error: ' + err)
|
||||
})
|
||||
|
||||
var addOpts = {
|
||||
announceList: [[announceUrl]],
|
||||
announce: [announceUrl],
|
||||
private: true
|
||||
}
|
||||
|
||||
seeder.seed(dataFile, addOpts, function(torrent){
|
||||
console.log("seeding")
|
||||
// Log torrent info, including actually used trackers
|
||||
console.log(torrent)
|
||||
|
||||
fs.writeFile(torrentFile, torrent.torrentFile, function(err){
|
||||
if (err){
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
|
||||
torrent.on('warning', function(err){
|
||||
console.log(err)
|
||||
});
|
||||
|
||||
torrent.on('error', function(err){
|
||||
console.log(err)
|
||||
});
|
||||
|
||||
torrent.on('download', function(bytes){
|
||||
console.log('downloaded bytes: ' + bytes)
|
||||
});
|
||||
|
||||
torrent.on('upload', function(bytes){
|
||||
console.log('uploaded bytes: ' + bytes)
|
||||
});
|
||||
|
||||
torrent.on('wire', function(wire, addr){
|
||||
console.log('connected to peer with addr: ' + addr)
|
||||
});
|
||||
|
||||
torrent.on('noPeers', function(announceType){
|
||||
console.log('no peers received with announce type: ' + announceType)
|
||||
})
|
||||
|
||||
torrent.on('done', function(){
|
||||
console.log('done')
|
||||
});
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
createSeeder()
|
||||
```
|
||||
|
||||
## Simplifications to procedure that might work
|
||||
|
||||
- using fake certificate and routing certificate url to localhost in
|
||||
/etc/hosts, meaning all of this could maybe be run locally/in Docker (but I
|
||||
think sdp negotiations tend to fail in that case..)
|
||||
|
||||
## Issues with Docker implementation
|
||||
|
||||
- webtorrent-hybrid adds its own trackers when opening torrents, even if they
|
||||
have been removed from file! The really robust way to get around this would
|
||||
be to block all outgoing traffic with e.g. iptables before starting tests,
|
||||
but I couldn't get it to work
|
||||
|
||||
## Notes on testing locally
|
||||
|
||||
Official tracker does not successfully handle file transfer on localhost
|
||||
on my machine between two instances of the official client (webtorrent-hybrid),
|
||||
probably due to sdp negotiation issues. This was with plain `ws` protocol.
|
||||
|
||||
## Possibly useful collection of commands
|
||||
|
||||
```sh
|
||||
npm install -g webtorrent-hybrid
|
||||
npm install -g bittorrent-tracker # Reference tracker
|
||||
|
||||
bittorrent-tracker --ws -p 3000 & # Reference tracker
|
||||
|
||||
mkdir files-seed files-leech torrents
|
||||
|
||||
webtorrent create files-seed/ws-ipv4 --announce "wss://127.0.0.1:3000" > torrents/ws-ipv4.torrent
|
||||
|
||||
cd files-seed
|
||||
webtorrent-hybrid seed torrents/ws-ipv4.torrent --keep-seeding -q &
|
||||
|
||||
cd ../files-leech
|
||||
webtorrent-hybrid download torrents/ws-ipv4.torrent -q &
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue