Webtorrent support #138
Replies: 7 comments 25 replies
-
@WarmBeer Can be closed, it's a protocol that is already supported by Torrust-Tracker. |
Beta Was this translation helpful? Give feedback.
-
I came here because I was trying to use https://github.com/dmotz/trystero with Torrust. However, typical for Webtorrent is that the announce endpoint is available over a Websocket transport, which for Torrust seems not to be the case, so I would vote for re-opening the ticket. I would much prefer to be able to run Torrust over Aquatic. |
Beta Was this translation helpful? Give feedback.
-
I’m suspect that not a lot of people use webtorrent and implementing it takes quite a bit of work.
It differs quite a bit from UDP/HTTP BitTorrent. It is based around having the tracker pass WebRTC SDP “offers” and “answers” between peers instead of returning peer IPs in announce responses. (At the very least, this was how the reference implementation did it a few years back when I read it to implement aquatic_ws)
As far as I know, there is none. I had to resort to reading the (unfortunately quite messy) reference implementation. |
Beta Was this translation helpful? Give feedback.
-
As elaborated by the other replies here from much more authoritative sources, there are some things that a Webtorrent-tracker server does a bit differently that make Javascript-based Webtorrent clients want something over a Websocket connection. I'm no expert on the difference in protocols so I have to delegate that to the experts that joined the discussion here.
Should the question not be the reverse? Anyway, I am working on this thing: https://parture.org that creates a network of nodes which should collectively serve CRDT collaboration sessions, think a Google Docs-way of working but trustless and decentralized. To this end I wanted to use Trystero, the Javascript Webtorrent lib that uses Webtorrent sessions to start WebRTC channels for sharing CRDT objects. For the trustless network I want(ed) to create a single Rust binary that does everything (IPFS server, Avalanche node, Webtorrent tracker, etc). When looking for crates that did bittorrent tracking I did notice Aquatic and Torrust both, but I tried Torrust first because it looked very well done, with clear documentation, and eye for detail. Torrust fit that perfectly and I managed to relatively straightforwardly compile it into my server-stack. It was only then that I read the fine line of Trystero and noticed it was incompatible with Torrust due to it "not supporting Webtorrent". As mentioned, Aquatic does do it but I'm having trouble with it because it tightly integrates with a Linux kernel version, but my development happens on Mac, I would need a Docker container to wrap my stack in, etc. My needs on the technical aspect are not very deep beyond decentrally being able to support WebRTC sessions and maybe acting as a CDN, both of which in browser contexts seem to be tied to the WebTorrent idea so I can't help much on suggestions to make it better. |
Beta Was this translation helpful? Give feedback.
-
FYI I’ve improved the documentation of the various aquatic_ws protocol structs, e.g, https://github.com/greatest-ape/aquatic/blob/master/crates/ws_protocol/src/incoming/announce.rs. |
Beta Was this translation helpful? Give feedback.
-
This discussion is great! I'm waiting for supported webtorrent too. I have try bittorrent-tracker, wt-trakcer, aquatic_ws, and I like more great projects. |
Beta Was this translation helpful? Give feedback.
-
Some little update. |
Beta Was this translation helpful? Give feedback.
-
It would be crazy cool if like Aquatic this supported webtorrent.
Beta Was this translation helpful? Give feedback.
All reactions