Break-Out Rooms allow users to participate in a discussion outside of the main Video Room i.e. the Parent Room.

Table of Contents

The process of breaking-out takes place in the following manner:

  • A creator or owner of the Break-Out Room invites one or more users from the Parent Room to the Break-Out Room.
  • The invited users get notified about the request and need to accept the request to join the Break-Out room.
  • Users moving out of the Parent Room are treated as “paused” users in the Parent Room until they return.

The implementation of Break-Out Room must be carried out with the following considerations:

  • Break-Out room can be created by a user from the Parent Room only.
  • A user cannot create another Break-Out Room while being within a Break-Out Room.
  • A Break-Out Room can be created with a limit to the maximum allowed participants in it. In any case, the maximum allowed participants in the Break-Out Room must be less than the maximum Active Talkers in the Parent Room.
  • Break-Out room currently supports only Audio Call with Screen Share and Canvas Streaming support.

Create Break-Out Room

The Enx.createBreakOutRoom() method is used to create a Break-Out Room.

Method: Enx.createBreakOutRoom(roomDefinition)

Parameters:

  • RoomDefinition – Required. JSON Object with Room definition parameters defined as following keys:
    • participants – Numeric. Required. Total number of Participants in the Break-Out Room. Range: Min: 2. Max: max_active_talkers of Parent Room – 1
    • audio – Boolean. Required. Set to true to enable Audio Communication in Break-Out Room.
    • video – Boolean. Required. Set to true to enable Video Communication in Break-Out Room. (This is currently not supported).
    • canvas – Boolean. Required. Set to true to enable Canvas Streaming in Break-Out Room.
    • share – Boolean. Required. Set to true to enable Screen-Sharing in Break-Out Room.
    • max_rooms – Numeric. Required. The total number of Break-Out rooms to be created.

Callbacks:

  • ackCreateBreakOutRoom – Acknowledgment to the creator with Break-Out Room returned as a JSON object when created.
  • breakoutRoomCreated – Notification to all the Moderators in the Parent Room when a Break-Out Room is created.

Error Codes / Exceptions

CodeDescription
5067Break-Out Room not supported in a Room in lecture-mode.

Invite Users to join a Break-Out Room

The Enx.inviteToBreakOutRoom() method allows the Creator/Owner of a Break-Out Room to invite one or more users from the Parent Room to join the Break-Out Room. In case, if the force_join feature is enabled, the invitee automatically joins the Break-Out Room.

This method must be invoked from the Parent Room and NOT from the Break-Out Room.

Method: Enx.inviteToBreakOutRoom(invitee)

Parameters:

  • Invitee – Dictionary with invitation details.
    • clients – Array of Client IDs of users to be invited.
    • room_id – String. Room ID of the Break-Out Room to which the users are being invited.
    • force_join – Boolean. If set to true, the invited participant will be forced to join the Break-Out Room.

Callbacks:

  • ackInviteBreakOutRoom– Acknowledgment to the Creator with JSON object returned as a response to the invitation process.
  • invitationForBreakoutRoom – Notification to the invited users when they are invited to join a Break-Out Room.
  • breakoutRoomInvited – Notification to all the Moderators in the Parent Room when a user is invited to a Break-Out Room.

Create Break-Out Room & Auto-Invite Users

The Enx.createAndInviteBreakoutRoom() is used to support certain use-cases where auto-assignment of users into different Break-Out Rooms is required. This method creates a Break-Out Room with given specifications and invites users to join a Break-Out Room randomly depending on the Room’s capacity.

Method: Enx.createAndInviteBreakoutRoom(roomDefinition)

Parameter:

Callback:

  • ackCreateAndInviteBreakOutRoom – Acknowledgment to the creator with the result of invitation in a JSON Array.

Error Codes / Exceptions

CodeDescription
5067Break-Out Room not supported in a Room in lecture mode.

Join a Break-Out Room

The Enx.joinBreakoutRoom() method allows users to join a Break-Out room on being invited by the creator. A user can join a Break-Out Room from the Parent Room only and can join only one Break-Out Room at a time, thus allowing the user to join another Break-Out Room only after re-joining the Parent Room first.

Method: Enx.joinBreakoutRoom(joinee,streamInfo)

Parameters:

  • Joinee – Dictionary with details required to join the Break-Out Room.
    • role – String. Required. Enumerated Values: participant, moderator.
    • room_id – String. Required. Room-ID of the Break-Out Room being joined.
  • streamInfo – Dictionary with Stream information while joining the Break-Out Room.
    • audio – BOOL. Set to true to join with Audio.
    • video – BOOL. Set to true to join with Video. This is currently not supported.

Callbacks:

  • connectedBreakoutRoom – Acknowledgment to the Joiner when Break-Out Room joined successfully.
  • failedJoinBreakOutRoom – Notification to the Joiner when fails to join the Break-Out Room.
  • userJoinedBreakoutRoom – Notification to everyone in the Break-Out Room when a new user joins the Room.

Reject Break-Out Room Invitation

The Enx.rejectBreakOutRoom() allows the invited user to reject the invitation to join a Break-Out Room.

Method: Enx.rejectBreakOutRoom(roomId)

Parameter:

roomId – The Break-Out Room identifier to which the user is invited.

Callbacks:

  • ackRejectBreakoutRoom – Acknowledgment to the user who rejected the invitation when the request to reject is successfully processed.
  • breakoutRoomInviteRejected – Notification to all the Moderators in the Parent Room when a user rejects an invitation to a Break-Out Room.

Pause/Resume Parent Room

The Enx.pause() method allows the user to pause the Parent Room after joining the Break-Out Room.

The Enx.resume() method is used to resume the Parent Room if it was paused while joining the Break-Out Room.

Method: 

  • Enx.resume()
  • Enx.pause()

Callbacks:

  • ackPause – Acknowledgment to the user when the Parent Room is paused.
  • ackResume – Acknowledgment to the user when the Parent Room is resumed.

Mute/Unmute Parent Room

The Enx.muteRoom() method allows the user to mute Audio and/or Video of the Parent Room after joining the Break-Out Room.

The Enx.unmuteRoom() is used to unmute Audio and/or Video of the Parent Room after disconnecting from Break-Out Room and resuming the Parent Room.

Methods: 

  • Enx.muteRoom
  • Enx.unmuteRoom

Callbacks:

  • ackMuteRoom – Acknowledgment to the user when the Parent Room is muted.
  • ackUnmuteRoom – Acknowledgment to the user when the Parent Room is unmuted.

Disconnect from Break-Out Room

The EnxRoom.disconnect() method allows the user to disconnect from the Break-Out Room. A user joins back in the Parent Room automatically after getting disconnected from the Break-Out Room.

Class: EnxRoom

Method: - (void)disconnect

Delegate Methods:

  • -room:didDisconnectedBreakoutRoom – Acknowledgment to the user when successfully disconnected from the Break-Out Room.
  • -room:didUserDisconnectedFromBreakoutRoom – Notification to everyone in the Break-Out Room when a user gets disconnected from the Room.
[EnxRoom disconnect]; 

- (void)room:(EnxRoom *_Nullable)room didDisconnectedBreakoutRoom:(NSArray *_Nullable) data {
	// data carries info related to disconnection
	/*
	{	"moderatorId": "",
		"msg": "Breakout Room disconnected",
		"result": 0
	}
	*/
};

- (void)room:(EnxRoom *_Nullable)room didUserDisconnectedFromBreakoutRoom:(NSArray *_Nullable) data {
	// data carries info related to disconnected user
	/*
	{	"clientId": "String",
		"name": "String",
		"room": "breakout-Development"
	}
	*/
};

Clear All Break-Out Rooms

Availability: iOS SDK 2.0.1+

The EnxRoom.clearAllBreakOutSession() method allows the participant to clear all Break-Out Rooms. The Participant gets disconnected from all breakout instances and resumes with the Parent Room.

Class: EnxRoom

Method: EnxRoom.clearAllBreakOutSession() – No Parameter required.

Event Listeners:

  • didDisconnectedBreakoutRoom – Notification to the Moderator/Owner of the Break-Out Room with information of the disconnected participant(s).
- (void)room:(EnxRoom *_Nullable)room didDisconnectededBreakoutRoom:(NSArray *_Nullable)data {
	// data carries disconnected breakoutroom information 
	/* 
	{	"room_id": "String"
	}
	*/
}

Handle Destroyed Break-Out Room

When all the users in a Break-Out Room get disconnected, the Break-Out Room is automatically destroyed and the creator of the Room is notified with the following Callback.:

Delegate Methods:

  • -room:didDestroyedBreakoutRoom – Notification to the owner when Break-Out Room gets destroyed.
- (void)room:(EnxRoom *_Nullable)room didDestroyedBreakoutRoom:(NSArray *_Nullable)data {
	// data carries destroyed room infomration 
	/* 
	{	"room_id": "String"
	}
	*/
}

Handle All Destroyed Break-Out Rooms

Availability: iOS SDK 2.0.1+

The EnxRoom.destroyAllBreakOutSession() method allows the moderator to destroy all the Breakout Room sessions. When all the Breakout Room sessions get destroyed, the Participants get disconnected and the Parent Room is automatically resumed and unmuted.

Class: EnxRoom

MethodEnxRoom.destroyAllBreakOutSession() – No Parameter required

Event Listeners:

  • didDisconnectedBreakoutRoom – Notification to the owner when the Breakout Room gets destroyed.
- (void)room:(EnxRoom *_Nullable)room didDisconnectedBreakoutRoom:(NSArray *_Nullable)data {
	// data carries disconnected room information 
	/* 
	{	"room_id": "String"
	}
	*/
}