Passa al contenuto principale

3.8.2. Parallel Forking (Forking parallelo)

3.8.2. Parallel Forking (Forking parallelo)

Il forking parallelo comporta l'invio di una chiamata a più chiamati remoti, dove ciascun chiamato può accettare la chiamata e possono essere stabilite più sessioni di segnalazione attive simultanee di conseguenza. Se più chiamati inviano media contemporaneamente, le possibilità per gestire questa situazione sono descritte in [RFC3960], Sezione 3.1. La maggior parte dei dispositivi SIP oggi supporta solo lo scambio di media con un singolo dispositivo alla volta e non tenta di miscelare più sorgenti audio di media precoci, poiché ciò potrebbe risultare in una situazione confusa. Ad esempio, si consideri di avere un tono di ritorno europeo miscelato insieme al tono di ritorno nordamericano -- il suono risultante non sarebbe come nessuno dei due toni e confonderebbe l'utente. Se l'applicazione di segnalazione desidera scambiare media solo con uno degli endpoint remoti alla volta, allora dal punto di vista del motore multimediale, questo è esattamente come il caso del forking sequenziale.

Nel caso del forking parallelo in cui l'applicazione JavaScript desidera scambiare simultaneamente media con più peer, il flusso è leggermente più complesso, ma l'applicazione JavaScript può seguire la strategia descritta da [RFC3960], utilizzando UPDATE. L'approccio UPDATE consente alla segnalazione di configurare un flusso multimediale separato per ciascun peer con cui desidera scambiare media. In JSEP, questa offerta utilizzata nell'UPDATE verrebbe formata semplicemente creando una nuova PeerConnection (vedere Sezione 4.1) e assicurandosi che gli stessi flussi di media locali siano stati aggiunti a questa nuova PeerConnection. Quindi il nuovo oggetto PeerConnection produrrebbe un'offerta SDP che potrebbe essere utilizzata dalla segnalazione per eseguire la strategia UPDATE discussa in [RFC3960].

Come risultato della condivisione dei flussi multimediali, l'applicazione finirà con N sessioni PeerConnection parallele, ciascuna con una descrizione locale e remota e i propri indirizzi locali e remoti. Il flusso multimediale da queste sessioni può essere gestito utilizzando setDirection (vedere Sezione 4.2.3), oppure l'applicazione può scegliere di riprodurre i media da tutte le sessioni mescolati insieme. Naturalmente, se l'applicazione desidera mantenere solo una singola sessione, può semplicemente terminare le sessioni di cui non ha più bisogno.