SDK Usage
Event Emitters

Listening to Event Emitters

After initializing the Samvyo SDK and successfully joining a room, the next step is to set up listeners for various event emitters. These events allow your application to respond to changes in the room, such as when new peers join, when audio or video streams start or stop, and when peers leave the room.

Why Listen to Event Emitters?

Listening to event emitters is crucial for creating a responsive and interactive user experience in your application. By handling these events, you can:

  • Update the UI when new participants join or leave.
  • Manage audio and video streams effectively.
  • Provide feedback to users about the status of their peers.

Setting Up Event Listeners

Once you have initialized the SDK and joined a room, you can set up listeners for the following events:

  1. newPeer: Triggered when a new peer joins the room.
  2. micStart: Triggered when a peer starts sending audio.
  3. videoStart: Triggered when a peer starts sending video.
  4. micEnd: Triggered when a peer stops sending audio.
  5. videoEnd: Triggered when a peer stops sending video.
  6. peerLeft: Triggered when a peer leaves the room.
  7. peerMuted: Triggered when a peer is muted.
  8. peerUnMuted: Triggered when a peer is unmuted.
  9. roomClosed: Triggered when a room is closed by the admin / moderator.
  10. recordingStarted: Triggered when a session recording is started.
  11. recordingEnded: Triggered when a session recording is ended.

For more events check methods and events page.

Sample Code

Here’s a sample code snippet demonstrating how to listen to these event emitters:

// Assuming Samvyo has been initialized and you have joined a room
 
// Listen for a new peer joining the room
samvyoInstance.on("newPeer", ({ peerId, peerName, type }) => {
  console.log(`New peer joined: ${peerName} (ID: ${peerId})`);
});
 
// Listen for when a peer starts sending audio
samvyoInstance.on("micStart", ({ peerId, audioTrack type }) => {
  console.log(`Peer ${peerId} started sending audio.`);
});
 
// Listen for when a peer starts sending video
samvyoInstance.on("videoStart", ({ peerId, videoTrack }) => {
  console.log(`Peer ${peerId} started sending video.`);
});
 
// Listen for when a peer stops sending audio
samvyoInstance.on("micEnd", ({ peerId, type }) => {
  console.log(`Peer ${peerId} stopped sending audio.`);
});
 
// Listen for when a peer stops sending video
samvyoInstance.on("videoEnd", ({ peerId, type }) => {
  console.log(`Peer ${peerId} stopped sending video.`);
});
 
// Listen for when a peer leaves the room
samvyoInstance.on("peerLeft", ({ peerId, type }) => {
  console.log(`Peer ${peerId} has left the room.`);
});
 
samvyoInstance.on("peerMuted", ({ peerId, type }) => {
  console.log(`Peer ${peerId} has left the room.`);
});
 
samvyoInstance.on("roomClosed", ({ roomId }) => {
  console.log(`Room ${roomId} has been closed by the moderator/admin.`);
});
 
samvyoInstance.on("recordingStarted", ({ peerId, startTime }) => {
  console.log(`Recording has been started at ${startTime} by peerId ${peerId}`);
});
 
samvyoInstance.on("recordingEnded", ({}) => {
  console.log(`Recording has been ended.`);
});

Summary

By setting up these event listeners, your application can effectively respond to changes in the room's state, providing a more interactive experience for users. Make sure to implement appropriate UI updates or notifications based on these events to enhance user engagement. Feel free to customize the event handling logic to fit your application's specific requirements and improve the overall user experience.