SendBird can be leveraged to bring further interactivity to your live streaming event. This document sets out how to work with many 1000s of users attending a live event.
Live events attract many users who would like to participate and contribute to a live chat streaming experience. The chat may exist as its own service or may appear alongside media streaming from a live event.
Below is an image from a SendBird sample that depicts live chat streaming for an online gaming event.
It’s easy to get up and running quickly with Sendbird’s existing sample apps. Before running the sample, review the “Channels Overview” section below to create chats ahead of time that users can quickly join into.
Open the sample in Xcode. In Main.storyboard, remove the “Group Channels Scene” and “GroupChannelsViewContoller Scene”. Any Group Channel code can be removed from the sample as this will not be needed for live streaming chats.
Run the sample to add users and show the “Open Channel” list of your channels.
Any Group Channel code can be removed from the sample as this will not be needed for live streaming chats.
Run the sample to add users and show the “Open Channel” list of your channels.
An open channel is a public chat by nature that can handle a large number of online users. A single open channel can accommodate thousands of simultaneous users in a Twitch-style public chat, and anyone can easily participate without permission. This maximum number of participants can increase per request (The participant default size is 5,000 in a shared instance, and can go up to 10,000 on a shared instance. The participant maximum size can go up to 100,000 on dedicated instances). Where applicable, Super Groups may also provide a solution for live events or live streaming.
Channel size and scalability
Preparation:Consider Informing SendBird of your event size in advance. SendBird has the capacity to automatically scale to meet your needs. However, providing advance notice with your projected user size will help to make sure that your event runs smoothly without reaching any upper limits of our scalability.
Create dynamically partitioned open channels in advance. Note: Please submit a request to SendBird (through email@example.com or your existing account manager) to enable dynamic partitioned channels by providing the application_id(s) which you would like to enable it for. Also please describe your use case for dynamic partitioned channels by mentioning “livestreaming”.
Channel creation can be achieved programmatically via Platform API. Or, if only creating a few channels, create these open channels on the Sendbird Dashboard. Consider calculating how many channels you will need and how long it will take to create them. When creating through the API, you should account for throttling channel creation to less than 30 per second.
Dynamic Partitioning is an open channel feature where users are separated into virtual groups to maintain the load of each group as well as to control the chat experience within the channel. When users send messages to the channel, their messages are inserted into their virtual group only. When channel operators (administrators) send a message into the channel, all groups will see their messages.
How does it work? Incoming users – users that are joining the channel – are always inserted into the smallest available “shard”. Each shard is filled up until a certain threshold with users, called the Allocation Ratio (default: 50% user capacity). If all shards are already filled to the Allocation Ratio, then a new shard will be created. If a channel has hit the maximum number of shards possible, then the existing shards will be filled over the allocation ratio’s threshold and the user will be added to all existing shards in a “round-robin” manner. Through this system, there is no splitting one shard’s users into multiple shards. Each member should be in the shard they started in unless the shard has under the Deallocation Ratio (default: 5% of the shard occupancy) for a certain amount of time. Under those conditions, the smallest shard will have all of its users moved to the next smallest shard. If the new user is an operator, they will access the channel as if it is not sharded, i.e. they will hear everything said in every shard and the operator’s messages will be visible in every shard.
When 1000s of users are involved in live events, consider how the messages they send and the actions they take will affect the user experience as a whole.
It is recommended that much consideration be given to providing several human moderators for live events. Sendbird’s experience suggests that 1:1000 ratio of moderators to channel members brings value to the live chat experience.
To help with moderation, SendBird provides extensive moderation tools, both automated and manual.
Dashboard moderation tools
SendBird Dashboard moderation offers many moderation functions right within the chat.
Channel operators as well as sendbird’s Platform API provides the ability to ban or mute channel members.
This service bans a user from an open channel. A banned user is immediately expelled from a channel and allowed to participate in the channel again after a set time period.
If user A blocks user B, user B’s messages will automatically be hidden from user A.
Imagine if user B was a bad actor or a spammer – if all the good users actively blocked user B, the chat experience wouldn’t be negatively impacted for the good users and the bad users would not be getting any attention.
There is also a service which mutes a user in the channel. A muted user remains in the channel and is allowed to view the messages, but can’t send any messages until unmuted. Users can be banned and muted within sendbird’s Dashboard moderation view or as below:
This feature allows you to customize the number of messages a participant can send in an open channel per second. By doing so, all excess messages from a participant will be deleted and only the number of messages allowed to be sent per participant per second will be delivered. This feature protects your app from some participants spamming others in the channel with the same messages.
Note: Our default system setting is 5 messages per second. This limit can be manually adjusted only from our side. You can contact our engineering team about this setting. This is one of Sendbird’s premium features, first contact our sales team for further assistance.
With pre-event webhooks a moderator or other service is able to capture, process and review an incoming message before it is forwarded to all members of a channel.
This means inappropriate messages can be removed or modified.
Sendbird provides a reporting platform that works both as part of a Platform API and SDK API.
Note: If your application will be deployed to Apple’s App Store, then our reporting API is required.
Question and answer: Ask me anything events
“Ask my anything” in this context relates to the condition where a celebrity, influencer, or famous person is available for a live chat experience that can be found in Sendbird
These recommendations may also apply to live ecommerce events where moderators are taking questions from online shoppers.
Consider how your celebrity/moderator will receive their questions. If there are 10,000 members in a channel freely asking questions will lead to a long list of streaming messages making it difficult to see the questions. Therefore, consider reducing the number of members who can ask a question.
Consider providing a gate in front of the channel members so the members may not freely ask questions.
The gate may be in the form of a paywall, where payment is through points, money, status or recommendation.
The gate could be a time based wall where users are able to submit their questions within particular time slots, either before the event starts or for short bursts during the event.
The wall could also be in the format of providing each user with a restricted number of questions they can ask, and in a first come first serve format.
Message pinning queue
Consider providing the celebrity and channel moderators (called channel operators in sendbird palance) the ability to pin messages.