Create large rooms

This guide will help you create large rooms which support a conferencing or HLS viewer count of up to 20,000 peers. Integration of multiple SFU instances in a mesh configuration, alongside optimized signaling mechanisms, facilitates efficient management of extensive peer lists and related actions like room joining and hand-raising at scale. This scalability enhancement is particularly valuable for webinar and live streaming scenarios in 100ms rooms.

Essentially, two implementation details need attention.

Server-side implementation

Creation of a room which has the required optimisations to support a large number of peers.

Create a large room →

Client-side implementation

Utilisation of first class APIs in the SDKs to handle hand-raise and peer list functionalities.

Implement functionalities →

Create a large room

Standard 100ms rooms handle up to 2500 peers. Large rooms need to be created with special scale optimizations to handle a large number of peers while functioning similarly to standard 100ms rooms. Use 100ms' server-side Create Room API to create a room with the large_room flag enabled. Use the size field to define the maximum number of expected peers in that room. The following cURL example illustrates how to create a large room.

POSThttps://api.100ms.live/v2/rooms
curl --location --request POST 'https://api.100ms.live/v2/rooms' \ --header 'Authorization: Bearer <management_token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "name": "new-large-room-081023", "description": "This is a sample description for the room", "template_id": "<template_id of the template you wish to associate with the room>", "large_room": true, "size":20000 }'
RESPONSE
Status: 200 OK
{ "id": "631b2654f771854d9bf633df", "name": "new-large-room-081023", "enabled": true, "description": "This is a sample description for the room", "customer_id": "627cdddff2e4e30487862ad1", "customer": "627cdddff2e4e30487862ad1", "app_id": "62510797903d857ab8ec3ba5", "recording_info": { "enabled": false }, "template_id": "63188115d11d6db790c73c60", "template": "sample-template-name", "region": "us", "size": 20000, "large_room": true, "created_at": "2022-09-09T11:41:08.082Z", "updated_at": "2022-09-09T11:41:08.074Z" }

When using the above API, following points need to be noted:

  1. The range of values for size can go up to 20,000 when the large_room flag is enabled. Expect the following error if a value larger than 20,000 is used.
{ "code": 400, "message": "Invalid body param", "details": ["Invalid body param: room size greater than 20000"] }
  1. All rooms which require the size to be greater than 2500 need to have the large_room flag enabled. Expect the following error if a value larger than 2500 is used without enabling the flag.
{ "code": 400, "message": "Invalid body param", "details": ["Invalid body param: room size greater than 2500, set large_room flag as true"] }
  1. The client side SDK optimisations only kick in if the large_room flag is enabled. Additionally, large rooms cannot be created through the 100ms dashboard yet.

Note

  • Large rooms support only 200 publishing peers.
    Publishing peers are defined as peers with audio and video publishing permissions.
  • Large rooms also support a maximum of 200 hand-raises at a single point in time.

Client-side implementation

In order to take advantage of these large rooms, you are required to use platform SDKs whose versions are higher than or equal to:

  1. For Web - @100mslive/hms-video-store v0.10.17 and @100mslive/react-sdk v0.8.17
  2. For Android - @live.100ms/android-sdk v2.7.7
  3. For iOS - v1.1.0
  4. For React Native - @100mslive/react-native-hms v2.0.0-alpha.0

Handling peer hand-raise function

100ms now supports first class APIs for hand-raise functionality. The following can be accomplished using them:

  • How to raise and lower hand
  • How to lower hand of a remote peer
  • How to know when a peer raises or lowers their hand

Follow the given documentation to implement the above functionalities.

Working with the peer list

If the room is very large, it is difficult to fetch each and every peer. To get the list of peers or the peer count of the room, use the following documentation:

Note

There will be no changes in functionality of the APIs shared above, if large_room flag is not enabled.


Have a suggestion? Recommend changes ->

Run in postman

Was this helpful?

1234