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
UserAgent
representing the local individual, - A
Session
must be opened with ApiRTC's servers to create aConversation
to which individuals can join, - In a
Conversation
, individuals can chat, watch, listen and/or share real-time audio, video, data, screen..., - A
Stream
is audio, and/or video captured from sources available from browser and published on aConversation
.
As the entry point to ApiRTC,
UserAgent
is instantiated using the apiKey associated to your enterprise account on https://cloud.apirtc.com.UserAgent
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.createstream
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.register
The
session
grants access to connected features such as conversations.An instance of
Conversation
is obtained from Session.getOrCreateConversation(name)
.getOrCreateConversation
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.join
Once a conversation joined, a
userAgent
can publish a stream using Conversation.publish(stream)
method:publish
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.listEventType
property tells whether the event is triggered for and addition (value'added'
) or a removal. - Calling
conversation.subscribeToStream(streamId)
with theStreamInfo.streamId
of an added remote stream makes this conversation subscribe to a stream. - Finally, listening on
Conversation
'streamAdded'
notifies with a remoteStream
instance which can be attached to web page for display.
subscribe