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

Add WebRTC support to popular torrent clients #369

Open
6 of 9 tasks
feross opened this issue Jul 7, 2015 · 62 comments
Open
6 of 9 tasks

Add WebRTC support to popular torrent clients #369

feross opened this issue Jul 7, 2015 · 62 comments

Comments

@feross
Copy link
Member

@feross feross commented Jul 7, 2015

Meta issue to track progress on getting WebRTC support into popular torrent clients.

@gauravsaini
Copy link

@gauravsaini gauravsaini commented Jul 9, 2015

👍

Loading

@feross feross added the meta label Jul 15, 2015
@Stiveknx
Copy link
Contributor

@Stiveknx Stiveknx commented Jul 29, 2015

Hi @feross.

So, how is the progress on this?

Loading

@feross
Copy link
Member Author

@feross feross commented Jul 30, 2015

@dcposch has done some exploration of getting webrtc support into libtorrent. It looks like it'll be doable!

Loading

@transitive-bullshit
Copy link
Member

@transitive-bullshit transitive-bullshit commented Oct 18, 2015

@feross seems to me that this should be the most important outstanding issue by far as it is really the only blocker for webtorrent gaining widespread use in the browser and fulfilling the original promise of the project.

@feross @mafintosh One other extremely popular torrent client that isn't listed here would be peerflix, as it still sees ridiculous usage (although hard to quantify) via the various popcorn-time forks. If peerflix were augmented to support webrtc peers, that could potentially allow a popcorn-time in the browser use case to function very well. Product Hunters seem to agree that this would be a great development.

It's also pretty clear that given the synergy between torrent-stream/peerflix and webtorrent in terms of environment and shared dependencies, making peerflix peers hybrid wouldn't be nearly as difficult as integrating webrtc support into the other, non-js-based torrent clients.

Loading

@dcposch
Copy link
Contributor

@dcposch dcposch commented Oct 18, 2015

Interesting...

peerflix peers hybrid wouldn't be nearly as difficult as integrating webrtc support into the other, non-js-based torrent clients

Agreed. @jhiesey & i checked out how hard it would be to add webtorrent support to one of the native torrent libraries, eg libtorrent.

It looks like the biggest hurdle is that there's no libdatachannel or anything like that, no small library with a clean API for using WebRTC data channels. instead, there are two full WebRTC implementations:

Loading

@B00tLdr
Copy link

@B00tLdr B00tLdr commented Nov 4, 2015

Maybe this project could be helpful: https://github.com/xhs/librtcdc

Loading

@dcposch
Copy link
Contributor

@dcposch dcposch commented Nov 4, 2015

wow, that looks awesome. if i have time later i'll try it out

Loading

@jhiesey
Copy link
Contributor

@jhiesey jhiesey commented Nov 4, 2015

@dcposch if it works well I want to look at making node bindings for it as well.

Loading

@cathalgarvey
Copy link

@cathalgarvey cathalgarvey commented Nov 24, 2015

Sorry if this is a stupid question, but:

Webtorrent's docs/FAQ suggest that browser-based WebTorrent users can only communicate with other browser based clients and "hybrid" clients. "Hybrid" clients can communicate with either pool, bridging the swarms.

Ultimately we don't want bridges, we want one swarm. But right now, what are the "bridges" or "hybrids"? Node-based WebTorrent users? Or something else?

Loading

@rom1504
Copy link
Member

@rom1504 rom1504 commented Nov 24, 2015

Loading

@devlo
Copy link

@devlo devlo commented Jan 18, 2016

@feross
Did you reach to bittorrent inc ? Making webtorrent as extension to Bittorrent protocol would be huge step.
The most important adopters are uTorrent and libtorrent (rtorrent, deluge etc.), rest really doesn't matter.
Another thing, where is documentation of protocol which webtorrent uses with implementation details ?
This is a must for adoption and I do not see any links in github repo or on webtorrent.io. You need to standardize webtorrent or you will see no adoption at all.
If someone would like to implement it in C/C++ then where he should look ? What if he is not familiar with javascript ?
In my opinion this is the main reason why you do not see any adoption besides people using your own lib.

Loading

@transitive-bullshit
Copy link
Member

@transitive-bullshit transitive-bullshit commented Jan 18, 2016

@devlo completely agreed; I know feross is aware of this, but there just hasn't been anyone who's stepped up and been able to make this integration happen. The piece that I'd recommend starting from would be communicating in C from libtorrent to https://github.com/feross/webtorrent-hybrid via webrtc probably using one of the C-based webrtc libraries listed above.

Loading

@transitive-bullshit
Copy link
Member

@transitive-bullshit transitive-bullshit commented Feb 9, 2016

See libtorrent#223 for some continued libtorrent discussion.

Loading

@rom1504
Copy link
Member

@rom1504 rom1504 commented Mar 13, 2016

https://wiki.vuze.com/w/WebTorrent it seems vuze has support now !

Loading

@voxadam
Copy link

@voxadam voxadam commented Jul 15, 2016

It seems to me that documenting the protocol adaptations/extensions would be the best way to encourage the developers of other clients to add support to their codebases. Ideally, I suppose this would come in the form of a BEP but even a draft specification would likely be welcomed by many.

Loading

@farribeiro
Copy link

@farribeiro farribeiro commented Oct 2, 2016

Add in this issue the link for libtorrent issue on github #223

Duplicated, sorry!

Loading

@hex-m
Copy link

@hex-m hex-m commented Oct 6, 2016

Someone created a ticket for Transmission. It may need some details though.
transmission/transmission#47

Loading

@dessalines
Copy link

@dessalines dessalines commented Oct 18, 2016

If this were done for libtorrent, it would work for deluge, and qbittorrent, the two most popular open source bittorrent clients. Once that's done, you instantly got a lot more seeders.

Loading

@dessalines
Copy link

@dessalines dessalines commented Nov 15, 2016

@feross I'm planning on assisting adding this into libtorrent, with a c++ webRTC library, but could you help point me to which files in this codebase show the webRTC communication?

Loading

@yciabaud
Copy link
Contributor

@yciabaud yciabaud commented Nov 15, 2016

Great @dessalines! Cannot wait to see that coming!

If I can give you some pointers:

  1. You will have to connect to the websocket tracker in order to make WebRTC signalling. Basically you will have to add WebRTC offers on announce and manage SDP offers/responses. Here is our implementation: https://github.com/feross/bittorrent-tracker/blob/master/lib/client/websocket-tracker.js
  2. Once a WebRTC connexion is established, the torrent peer protocol is used, so there is nothing special here. This project uses https://github.com/feross/simple-peer to make the connexion then it becomes a "normal" peer. (Except that the connexion is handled upstream: https://github.com/feross/webtorrent/blob/15ed59a0d2c9d32598ab4c98706e6fd8fa200843/lib/peer.js#L16)

There is a BEP we are working on in #881, it should give you some informations but be aware that some fields have been renamed for the future standard and read the comments (or look at the code).
The document is published at https://github.com/yciabaud/webtorrent/blob/486a94d2b651e7aed86ba27b82e679f5d1d1e700/bep_webrtc.rst

I am very interested in making libtorrent support webtorrent so ask if there is anything I can do for it.

Loading

@kelna
Copy link

@kelna kelna commented Jul 26, 2019

Is this dead?

Loading

@feross
Copy link
Member Author

@feross feross commented Aug 3, 2019

Is this dead?

No.

Loading

@farribeiro
Copy link

@farribeiro farribeiro commented Aug 4, 2019

And implements webrtc without browser... Its possible?

And this... https://github.com/pion/webrtc and https://github.com/thorst/RTC

Loading

@ExE-Boss
Copy link

@ExE-Boss ExE-Boss commented Aug 4, 2019

Yes, there’s discussion over at arvidn/libtorrent#223 about existing non‑browser WebRTC implementations and their pros and cons.

The most favourable option currently appears to be @lgrahl’s RAWRTC.

Loading

@backkem
Copy link

@backkem backkem commented Aug 4, 2019

Anyone into Go may be able to pick up anacrolix/torrent#138. pion/webrtc should be in good shape to power a Go implementation.

Loading

@dessalines
Copy link

@dessalines dessalines commented Aug 4, 2019

Libtorrent (which is written in C++) is the only one that matters. It powers qbittorrent, deluge, transmission, rtorrent.

Loading

@ExE-Boss
Copy link

@ExE-Boss ExE-Boss commented Aug 4, 2019

rTorrent uses its own BitTorrent implementation, which is also, confusingly, called LibTorrent.

Loading

@iagovar
Copy link

@iagovar iagovar commented Nov 11, 2019

Any update?

I really want to upload my videos to a seedbox and then stream to peertube, bitchute and web players, but it seems odd to have to do it trough a VPS and a freaking browser open. It's just too much bloat because I need to install X and so on.

I don't trust peertube instances to keep hosting.

Loading

@transitive-bullshit
Copy link
Member

@transitive-bullshit transitive-bullshit commented Nov 25, 2019

Really interesting progress on integrating into libtorrent. arvidn/libtorrent#4123

Loading

@Allardje
Copy link

@Allardje Allardje commented Jan 22, 2020

I really hope this is still on-going. I would love to see something like rTorrent adopting WebRTC support. This will be a game changer. Been following this for a very long time but it seems no new clients added WebRTC for years :(.

Loading

@kropple
Copy link

@kropple kropple commented Mar 27, 2020

is there by now any high-performance torrent client which i can use to seed a huge amount of files?
i saw there is some movement at libtorrent but nothing usable until now.

Loading

@backkem
Copy link

@backkem backkem commented Apr 16, 2020

anacrolix/torrent just landed initial WebTorrent support in anacrolix/torrent#393. I guess this marks the first port to another language, Go in this case.

Loading

@PeterTheOne
Copy link

@PeterTheOne PeterTheOne commented May 25, 2020

The Wikipedia Article comparing BitTorrent clients is missing WebTorrent clients and also a column on WebTorrent/WebRTC as a supported feature. That would also be a good place to track support, I hope this is on topic here.

Loading

@farribeiro
Copy link

@farribeiro farribeiro commented May 25, 2020

libtorrent (arvidn/libtorrent#223, #241) implementation finshed, awaiting review to go/ready

Loading

@artemmolotov
Copy link

@artemmolotov artemmolotov commented Jul 1, 2020

PR arvidn/libtorrent#4123 is merged!

Loading

@modbender
Copy link

@modbender modbender commented Sep 6, 2020

Please add this too: https://github.com/Novik/ruTorrent
seedboxes from seedbox.io use them

Loading

@zero77
Copy link

@zero77 zero77 commented Sep 7, 2020

@modbender
I think rtorrent is what you are after as ruTorrent is just the php browser interface.

Loading

@modbender
Copy link

@modbender modbender commented Sep 7, 2020

Oh right. Didn't read about it fully, Thank you.

Loading

@fmohican
Copy link

@fmohican fmohican commented Oct 22, 2020

Is there any guide to compile rtorrent with webrtc support?

//sorry for offtopic.

Loading

@ThaUnknown
Copy link
Member

@ThaUnknown ThaUnknown commented Aug 14, 2021

@feross I think bringing WRTC to JSTorrent will be hard for the same reasons why the brave webtorrent extension doesn't have WRTC, also libtorrent has WRTC support, but doesn't support webtorrent yet, it wants to do it tho

Loading

@farribeiro
Copy link

@farribeiro farribeiro commented Oct 20, 2021

Is there any guide to compile rtorrent with webrtc support?

//sorry for offtopic.

I think isn't have any movement to turn hybrid the rtorrent (rakshasa/rtorrent#717)

btw... I commented on @vbakc issue, i liked the TUI of client

Loading

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

Successfully merging a pull request may close this issue.

None yet