Partial network connection - Trystero public bittorrent streams availability #2

Closed
opened 2024-08-18 00:56:03 +00:00 by Caretaker0699 · 2 comments

Both the upstream project and remnantchat are dealing with connection issues to the default public bittorrent streams included with trystero. Current discussions are on self-hosting streams or switching protocols.

More info can be found here:
https://github.com/dmotz/trystero?tab=readme-ov-file#strategy-comparison

"To establish a direct peer-to-peer connection with WebRTC, a signalling channel is needed to exchange peer information (SDP). Typically this involves running your own matchmaking server but Trystero abstracts this away for you and offers multiple "serverless" strategies for connecting peers (currently BitTorrent, Nostr, MQTT, Supabase, Firebase, and IPFS)."

What to consider:

"Trysteroʼs unique advantage is that it requires zero backend setup and uses decentralized infrastructure in most cases. This allows for frictionless experimentation and no single point of failure. One potential drawback is that itʼs difficult to guarantee that the public infrastructure it uses will always be highly available, even with the redundancy techniques Trystero uses. While the other strategies are decentralized, the Supabase and Firebase strategies are a more managed approach with greater control and an SLA, which might be more appropriate for “production” apps."

Opening this issue for discussion on direction for remnantchat from here to increase reliability.

Both the upstream project and remnantchat are dealing with connection issues to the default public bittorrent streams included with trystero. Current discussions are on self-hosting streams or switching protocols. More info can be found here: https://github.com/dmotz/trystero?tab=readme-ov-file#strategy-comparison "To establish a direct peer-to-peer connection with WebRTC, a signalling channel is needed to exchange peer information (SDP). Typically this involves running your own matchmaking server but Trystero abstracts this away for you and offers multiple "serverless" strategies for connecting peers (currently BitTorrent, Nostr, MQTT, Supabase, Firebase, and IPFS)." What to consider: "Trysteroʼs unique advantage is that it requires zero backend setup and uses decentralized infrastructure in most cases. This allows for frictionless experimentation and no single point of failure. One potential drawback is that itʼs difficult to guarantee that the public infrastructure it uses will always be highly available, even with the redundancy techniques Trystero uses. While the other strategies are decentralized, the Supabase and Firebase strategies are a more managed approach with greater control and an SLA, which might be more appropriate for “production” apps." Opening this issue for discussion on direction for remnantchat from here to increase reliability.
Member

If we want something that can move the project forward quickly and is consistently reliable production ready and right now that may be Supabase or Firebase.

Information on Libtorrent down below

Github
https://github.com/arvidn/libtorrent
Documentation
https://www.libtorrent.org/

I have been researching three different Bitorrent Libraries and I asked ai to come up with a summary for each one.
Libtorrent excels in building custom, high-performance peer-to-peer applications with advanced features.
OpenTracker is ideal for simple, high-performance tracking needs, but offers limited customization.
BitTornado provides a balance between ease of use and performance, but with less flexibility than libtorrent.

Libtorrent is the one that is been updated most consistently, last updated two weeks ago.

however there is a steep learning curve and would be multiple steps in the process to create the peer to peer app

1 Set up Libtorrent become familiar with API and documentation
2. Choose a signaling server:

  • Select a signaling server (e.g., WebSocket, (link unavailable), or SimpleWebRTC) to facilitate peer discovery and connection establishment.
  • Set up the signaling server to handle user registration, peer matching, and connection brokering.
  1. Establish peer connections:
  • Use libtorrent to establish peer connections between users.
  • Utilize WebRTC's peer connection API to create a direct connection between peers.
  1. Handle video streaming:
  • Employ WebRTC's media streaming API to capture and transmit video streams between peers.
  • Use libtorrent's built-in support for streaming data to transmit video data.
  1. Implement video chat functionality:
  • Create a user interface for your video chat application.
  • Handle user input, such as starting/stopping video, muting/unmuting audio, and disconnecting.
    6 Testing
If we want something that can move the project forward quickly and is consistently reliable production ready and right now that may be Supabase or Firebase. Information on Libtorrent down below Github https://github.com/arvidn/libtorrent Documentation https://www.libtorrent.org/ I have been researching three different Bitorrent Libraries and I asked ai to come up with a summary for each one. Libtorrent excels in building custom, high-performance peer-to-peer applications with advanced features. OpenTracker is ideal for simple, high-performance tracking needs, but offers limited customization. BitTornado provides a balance between ease of use and performance, but with less flexibility than libtorrent. Libtorrent is the one that is been updated most consistently, last updated two weeks ago. however there is a steep learning curve and would be multiple steps in the process to create the peer to peer app 1 Set up Libtorrent become familiar with API and documentation 2. Choose a signaling server: * Select a signaling server (e.g., WebSocket, (link unavailable), or SimpleWebRTC) to facilitate peer discovery and connection establishment. * Set up the signaling server to handle user registration, peer matching, and connection brokering. 3. Establish peer connections: * Use libtorrent to establish peer connections between users. * Utilize WebRTC's peer connection API to create a direct connection between peers. 4. Handle video streaming: * Employ WebRTC's media streaming API to capture and transmit video streams between peers. * Use libtorrent's built-in support for streaming data to transmit video data. 5. Implement video chat functionality: * Create a user interface for your video chat application. * Handle user input, such as starting/stopping video, muting/unmuting audio, and disconnecting. 6 Testing
Author
Owner

This has been resolved by using our own TURN servers as this was the underlying issue. Moving this issue to closed.

This has been resolved by using our own TURN servers as this was the underlying issue. Moving this issue to closed.
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Shiloh/remnantchat#2
No description provided.