Stream channels
Stream channels are based on the room model. In Signaling, communication through stream channels requires use of specific APIs. This page shows you how to join, leave, and send messages in stream channels.
Understand the tech
To use stream channels, you first create a stream channel object instance. The channel instance gives you access to all stream channel management methods. Use the stream channel instance to:
- Join and leave a channel
- Join and leave topics
- Subscribe to and unsubscribe from topics
- Send messages
- Destroy the channel instance
After joining a stream channel, you listen to event notifications in the channel. To send and receive messages in the channel, you use topics. Signaling allows thousands of stream channels to exist simultaneously in your app. However, due to client-side performance and bandwidth limitations, a single client may only join a limited number of channels concurrently. For details, see API usage restrictions.
Prerequisites
Ensure that you have:
-
Integrated the Signaling SDK in your project, and implemented the framework functionality from the SDK quickstart page.
-
Activated stream channel capability in Agora Console. To do so, go to Projects > Edit project > All features > Signaling > Stream channel configuration and toggle to enable.
Implement communication in a stream channel
This section shows you how to use the Signaling SDK to implement stream channel communication in your app.
Create a stream channel
To use stream channel functionality, call createStreamChannel
to create a StreamChannel
object instance.
This method creates only one StreamChannel
instance at a time. If you need to create multiple instances, call the method multiple times.
Signaling enables you to create unlimited stream channel instances in a single app. However, best practice is to create channels based on your actual requirements to maintain optimal client-side performance. For instance, if you hold multiple stream channel instances, destroy the ones that are no longer in use to prevent resource blocking, and recreate them when they are needed again.
Join a stream channel
Call the join
method on the StreamChannel
instance with appropriate options as follows:
When joining a channel, set the token
parameter in JoinChannelOptions
with a temporary token from Agora Console.
To facilitate testing of the app during development, set the Authentication mechanism to Debugging mode when creating the project, and use the app ID in the token
parameter when joining a channel.
In stream channels, message flow is managed using topics. Even if you configure a global message listener, you must still join a topic to send messages. Similarly, to receive messages you must subscribe to a topic. See Topics for more information.
Send a message
To send a message to a stream channel, you first need to:
- Create a
StreamChannel
instance. - Use the
join
method to join a channel. - Call
joinTopic
to register as a message publisher for the specified topic. See Topics.
Call publishTopicMessage
to publish a message to a topic. This method sends a message to a single topic at a time. To deliver messages to multiple topics, call the method separately for each topic.
Refer to the following sample code for sending messages:
-
String message
-
Binary message
In Signaling, a user may register as a message publisher for up to 8 topics concurrently. However, there are no limitations on the number of users a single topic can accommodate. You can achieve a message transmission frequency to a topic of up to 120 QPS. This capability is useful in scenarios that demand high-frequency and high-concurrency data processing, such as Metaverse location status synchronization, collaborative office sketchpad applications, and parallel control operation-instructions transmission.
Leave a stream channel
To leave a channel, call the leave
method on the StreamChannel
instance:
To rejoin a stream channel, call the join
method again. You can join and leave as long as the corresponding StreamChannel
instance remains active and has not been destroyed.
Destroy the stream channel instance
To destroy a stream channel instance, call release
:
Destroying a stream channel removes the StreamChannel
instance from your app. This action is local to your app and does not affect other users or the Signaling channel.
Reference
This section contains content that completes the information on this page, or points you to documentation that explains other aspects to this product.
Message packet size
Signaling SDK imposes size limits on message payload packets sent in Message channels and Stream channels. The limit is 32 KB for Message channels and 1 KB for Stream channels. The message payload packet size includes the message payload itself plus the size of the customType
field. If the message payload package size exceeds the limit, you receive an error message.
To avoid sending failure due to message payload packet size exceeding the limit, check the packet size before sending.