Connection & Setup
connection
Contains update information about your connection status to the Eyeson API.
{
type: 'connection',
connectionStatus: 'fetch_room' | 'connected' | 'access_denied'
}
room_setup
Received once the real time channel connection is established. This event contains information about the state of the current room.
{
type: 'room_setup',
content: {
access_key: 'token-for-room',
ready: true | false,
room: {
id,
name,
ready: true | false,
shutdown: true | false,
sip: { /* omitted */ } // sip connection credentials
guest_token: 'token-for-guest'
},
team: {
name
},
user: {
id,
name,
avatar,
guest: true | false,
ready: true | false,
sip: { /* omitted */ } // sip connection credentials
},
links: {
self: 'https://api.eyeson.team/rooms/token-for-room',
gui: 'https://app.eyeson.team/?token-for-room',
guest_join: 'https://app.eyeson.team/?guest=token-for-guest',
websocket: 'https://api.eyeson.team/rt?access_key=token-for-room'
},
presentation: { /* ... */ },
broadcasts: [],
recording: null
}
}
An Eyeson room server and user may not be available on the first request, therefore there are three status flags included in the response above. Room ready and user ready status, as well as the top level ready flag combining those two.
room_ready
When you establish a real time connection but the Eyeson room isn't ready at
that point (i.e. room_setup
content ready is false) you'll receive this
separate message once the room is ready.
{
type: 'room_ready',
content: {
ready: true,
user: { /* ... */ },
room: { /* ... */ }
}
}
fetch_room
Fetch the room details, provides the room and user information and is also
initially received when a room changes its status to ready
. The event can be
send to the Eyeson room and will return with same type when a response is
received.
eyeson.send({ type: 'fetch_room' });
{
type: 'fetch_room',
room: { /* ... */ }
}
accept
Received once a session for the room has been established.
{
type: 'accept',
remoteStream: MediaStream, // the remote stream you're receiving
localStream: MediaStream // your local stream
}
stream_update
Remote or local stream has been updated and needs to be replaced.
{
type: 'stream_update',
stream: MediaStream, // new remote stream
localStream: MediaStream // new local stream
}
disconnect
User has disconnected. If providing a presentation feature you should ensure to close any active presentation held by this user, and on demand remember to restore on reconnect.
{
type: 'disconnect'
}
reconnect
A user has reconnected, received after disconnect.
{
type: 'reconnect'
}
podium
A user has muted the camera, left the room or started a screen capture session. Every connected source, video source indexes and an optional presenter source index are provided.
{
type: 'podium',
solo: true | false, // client is the only participant
audio: true | false, // client participates with audio (is "hearable")
video: true | false, // client participates with video (is "visible")
media: true | false, // source list includes media (e.g. gifs or video files)
sources: sources, // list of source client ids
layers: [{ id: String, zIndex: -1|1 }], // list of current layers, empty if no layers exist
isSource: true | false, // client is a source
presenter: clientId | false, // clientId of presenter
isPresenter: true | false, // client is presenter
hasPresenter: true | false, // a participant is presenting
videoSources: videoSources, // list of video sources => index of sources list
userDimensions: {x, y, w, h}, // viewbox of current user on the remote stream
hasVideoSources: true | false, // session has video sources
hasMutedVideoPeers: true | false, // forwarded video (sfu) is muted
allUserDimensions: [{clientId, playId, x, y, w, h}] // list of all users with dimensions on video
}