Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Seeding via webtorrent-hybrid not working #1812

Open
mayeaux opened this issue Feb 3, 2020 · 4 comments
Open

Seeding via webtorrent-hybrid not working #1812

mayeaux opened this issue Feb 3, 2020 · 4 comments

Comments

@mayeaux
Copy link

@mayeaux mayeaux commented Feb 3, 2020

"webtorrent-hybrid": "^4.0.1",

OS X 10.14.4
NPM: 6.13.4
Node: v8.17.0

var WebTorrent = require('webtorrent-hybrid')

var client = new WebTorrent()

client.on('error', (err) => {
  console.error(`fatalError ${err.message || err}`);
  process.exit(1);
});

client.seed('./c5l.mp4', function (torrent) {
  torrent.on('warning', function (err) {
    console.warn(err);
  });
  torrent.on('error', function (err) {
    console.error(err);
  });

  console.log('client.seed done', {
    magnetURI: torrent.magnetURI,
    ready: torrent.ready,
    paused: torrent.paused,
    done: torrent.done,
    infohash: torrent.infoHash
  });
});

Gives me my magnet string. On the frontend I have:

script(src = 'https://cdnjs.cloudflare.com/ajax/libs/webtorrent/0.107.17/webtorrent.min.js')

script.
  var client = new WebTorrent()


// working torrentId
  var torrentId2 = 'magnet:?xt=urn:btih:c9e15763f722f23e98a29decdfae341b98d53056&dn=Cosmos+Laundromat&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.btorrent.xyz&tr=wss%3A%2F%2Ftracker.fastcast.nz&tr=wss%3A%2F%2Ftracker.openwebtorrent.com&ws=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2F&xs=https%3A%2F%2Fwebtorrent.io%2Ftorrents%2Fcosmos-laundromat.torrent'

// failing torrentId
  var torrentId5 = 'magnet:?xt=urn:btih:f9435fb103d53a0b3cce14afbae867cc6999d76b&dn=c5l.mp4&tr=udp%3A%2F%2Fexplodie.org%3A6969&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969&tr=udp%3A%2F%2Ftracker.empire-js.us%3A1337&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337&tr=wss%3A%2F%2Ftracker.openwebtorrent.com'

  client.add(torrentId5, function (torrent) {
    // Torrents can contain many files. Let's use the .mp4 file
    var file = torrent.files.find(function (file) {
      console.log(file);

      return file.name.endsWith('.mp4')
    })

    // Display the file by adding it to the DOM.
    // Supports video, audio, image files, and more!
    file.appendTo('body')
  })

When I have the working torrentId the video loads as expected. When I sub it out with the magnet url that was created via the webtorrent-hybrid package I first get some errors:

WebSocket connection to 'wss://tracker.fastcast.nz/' failed: Error in connection establishment: net::ERR_NAME_NOT_RESOLVED

Great, so I remove that tracker from the querystring, try again:

WebSocket connection to 'wss://tracker.btorrent.xyz/' failed: Unknown reason

Great, remove it again I get something that just hangs and nothing happens.

If I use the magnet on Brave it just hangs at Loading the torrent file list and the spinner endlessly spins.

What's going on? Thanks

@vijayanandnandam

This comment has been minimized.

Copy link

@vijayanandnandam vijayanandnandam commented Feb 3, 2020

@mayeaux i think both trackers are down. Even openwebtorrent.com is overloaded at times and timeouts. You have to setup own tracker for reliability.
Check https://github.com/webtorrent/bittorrent-tracker.
You can use nginx for ssl termination and proxy the websocket requests to tracker behind

@mayeaux

This comment has been minimized.

Copy link
Author

@mayeaux mayeaux commented Feb 3, 2020

Thanks @vijayanandnandam . Are there any tutorials/examples of this already setup? If we are assuming that none of the trackers work (which seems to be the case) then I assume that there should be good tutorials made on how to complete this step (setting up a tracker) since it now seems like a requirement if you want the module to work, thanks.

@vijayanandnandam

This comment has been minimized.

Copy link

@vijayanandnandam vijayanandnandam commented Feb 4, 2020

@mayeaux check this gist https://gist.github.com/vijayanandnandam/8e885aba70de6870198bcad0f9396416

It gives a rough idea on what do. You still have to configure nginx properly for ssl termination

@mayeaux

This comment has been minimized.

Copy link
Author

@mayeaux mayeaux commented Feb 4, 2020

Thanks. Is there any way for me to test this locally? I did more research yesterday and it looks like perhaps my router is blocking incoming traffic over WebSockets, I wish I could expose my localhost port via something like ngrok but it seems like webtorrent-hybrid uses a random port on boot and it can't be specified. I have a 1.4k star Github project I would like to incorporate WebTorrent with but if there's not a good solution for being able to test the functionality locally and it requires a public server with a public IP (and there's no good workarounds) then that makes the flow of me incorporating the functionality way more difficult and makes me far more reluctant to incorporate WebTorrent into my app since it won't "just work" out of the box. Thanks for your help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.