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.
Client-side implementation
Utilisation of first class APIs in the SDKs to handle hand-raise and peer list 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.
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 }'
{ "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:
- The range of values for
size
can go up to 20,000 when thelarge_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"] }
- All rooms which require the
size
to be greater than 2500 need to have thelarge_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"] }
- 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:
- For Web -
@100mslive/hms-video-store v0.10.17
and@100mslive/react-sdk v0.8.17
- For Android -
@live.100ms/android-sdk v2.7.7
- For iOS -
v1.1.0
- 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.
- On Web
- On Android
- On iOS
- On React Native
- On Flutter
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:
- On Web
- On Android
- On iOS
- On React Native
- On Flutter
Note
There will be no changes in functionality of the APIs shared above, if large_room
flag is not enabled.