Video Communication LifeCycle
What does a video communication lifecycle look like?
Before starting coding... let's walk through the main concepts, methods and classes used during a Conversation lifecycle.
First, each run of a client application instantiates one
UserAgentrepresenting the local individual,A
Sessionmust be opened with ApiRTC's servers to create aConversationto which individuals can join,In a
Conversation, individuals can chat, watch, listen and/or share real-time audio, video, data, screen...,A
Streamis audio, and/or video captured from sources available from browser and published on aConversation.
UserAgent
As the entry point to ApiRTC, UserAgent is instantiated using the apiKey associated to your enterprise account on https://cloud.apirtc.com.
Stream
When UserAgent.createStream(options) is called, a popup opens in the browser to request user acceptance for using media devices. The returned Promise resolves with an instance of Stream, which carries media stream from computer device through the browser.
The method Stream.attachToElement(domElement) binds the media stream to a DOM <video> element in order to display it in the web page.
Session
To use ApiRTC's connected features, a userAgent must register to get a session. This can be done with or without authentication.
Simply using UserAgent.register() without authentication details registers a userAgent with ApiRTC's servers without authentication.
The session grants access to connected features such as conversations.
Conversation
An instance of Conversation is obtained from Session.getOrCreateConversation(name).
Join
Calling Conversation.join() makes the userAgent used to create the Session used to create this instance of Conversation (through it's Session) join the conversation.
Publish Streams
Once a conversation joined, a userAgent can publish a stream using Conversation.publish(stream) method:
Subscribe to Streams
Subscribing to peer streams shall be implemented as followed:
Listen on
Conversation'streamListChanged'event to get notified of streams published to the conversation. The data provided by the event is aStreamInfo: It gives information on streams published in the conversation such as the id (StreamInfo.streamId) of the stream.StreamInfo.listEventTypeproperty tells whether the event is triggered for and addition (value'added') or a removal.Calling
conversation.subscribeToStream(streamId)with theStreamInfo.streamIdof an added remote stream makes this conversation subscribe to a stream.Finally, listening on
Conversation'streamAdded'notifies with a remoteStreaminstance which can be attached to web page for display.
Last updated