Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Basicnet Protocol Documentation

Aperta
#21 34 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Documentazione
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
go

Direzione di ricerca

Nell’issue non sono indicati file di documentazione, test o entry point. Inizia individuando la struttura di documentazione esistente del repository e confrontandola con il protocollo descritto qui; il lavoro è completato quando i tipi di messaggio, i ruoli dei nodi, il ciclo di vita dello stream, la gestione delle playlist e il comportamento di node-status sono documentati in modo chiaro e coerente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Super Rough Version

Message Types:

  1. Sub
  2. Data (video segment)
  3. Finish
  4. Cancel
  5. TranscodeResponse
  6. GetMasterPlaylist
  7. MasterPlaylistData
  8. NodeStatusReq
  9. NodeStatusData

Node Roles:

Broadcaster

  • Sends video segments to its listeners
  • If no listeners, drop the segments
  • Broadcasts exist for each StrmID

Subscriber

  • Receives video segments, and puts it into local video streams
  • Subscribers exist for each StrmID

Relayer

  • Receives video segments and calls the callback function.
  • Relayers exist for each (MessageType, StrmID)

Protocol:

When a node wants to broadcast a stream:

  • Create a local broadcaster, push Data to the broadcaster's listeners
  • This can happen even when no one in the network wants the stream

When a node wants to subscribe to a stream:

  • Create a local subscriber with the streamID
    • This registers a callback, we usually put the data into a video stream in the caller
  • Send Sub req to the network

When a node receives a Sub req:

  • If there is a local broadcaster, add the requester's ID to its listener array
  • If there is a local relayer, add the requester's ID to its listener array
    • We assume the local relayer has already been created and the Sub req has been passed on.
  • If there is a local subscriber and no local relayer, create a local relayer, add the requester's ID to its listener array
  • If there is no local relayer, local subscriber, or broadcaster, create a local relayer, add the requester's ID to its listener array, and forward the request along.

When a node receives a Data req:

  • If there is a local subscriber, send the data there
  • If there is a local relayer, send the data there
  • Otherwise, report an error

When a broadcaster finishes a stream:

  • Send a Finish message to its listeners

When a node receives a Finish message:

  • If there is a local subscriber, call it with EOF and delete it
  • If there is a local relayer, forward the Cancel message to its listeners, and delete the relayer

When a node finishes subscribing (for example, player shuts down)

  • Send a Cancel message to its upstream peer and delete the subscriber

When a node receives a Cancel message:

  • If there is a local broadcaster, remove the peer from its listeners array.
  • If there is a local relayer, remove the peer from its listeners array. If this makes the listeners array empty, remove the relayer.

The node sends a TranscodeResponse msg to the broadcasting node when it gets a transcode job from the blockchain.

  • The broadcasting node should have set up a callback function to be able to receive the TranscodeResponse message (ReceivedTranscodeResponse)

StrmID might be confusing with MasterPlaylistID → Each master playlist contains multiple media playlists (represented by a single StrmID) - https://developer.apple.com/library/content/referencelibrary/GettingStarted/AboutHTTPLiveStreaming/about/about.html

The node populates the masterPlaylist map when it creates a new stream, and updates the masterPlaylist if it receives MasterPlaylistData.

The node sends out a GetMasterPlaylist request when it gets a media server video request

When a node receives a GetMasterPlaylist request:

  • If we find the masterPlaylist in the local map, return it.
  • If not
    • If the nodeID from the streamID is the current node, we return a NotFound
    • Otherwise, we forward it along, and create a local relayer if it doesn't already exist

When a node receives a MasterPlaylistData

  • If we are the node requesting for it, give it to the requester
  • If we are not the node requesting for it, we should have a local relayer, so relay the message along

NodeStatus works the same way as GetMasterPlaylist/MasterPlaylistData, it's used for getting a remote node's status (planning to use it for debugging)

Lingua principale
Go
Stelle
18
Fork
6
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di livepeer/go-livepeer-basicnet

Tutte le issue di livepeer/go-livepeer-basicnet

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.