This page provides a brief overview of the limitations of the Agora RTM SDK for Android, including API call limit, string size, encoding, and more.
The Agora RTM SDK does not have a limit on the number of concurrent online users. However, Agora has the following recommendations on the maximum number of channel messages per second for a single channel:
| Concurrent online users in a single channel | Number of channel messages per second |
|---|---|
| < 1,000 | < 200 |
| ≥ 1,000 and < 10,000 | < 100 |
| ≥ 10,000 | < 30 |
If the number of messages per second exceeds the recommended values, latency can increase significantly and may also cause the following issues:
RECONNECTING state or keeps switching between the CONNECTED state and the RECONNECTING state. For other users, the current user may appear offline.Agora provides customized service to increase the number of messages per second without affecting latency or stability. Please contact support@agora.io for more information.
The call limit is for one RtmClient instance. If an operation corresponds to multiple methods, the number of the method calls of an operation equals the sum of the method calls of all corresponding methods in a specific time frame.
RtmClient instances.| Operation | Method | Call limit |
|---|---|---|
| Log in the RTM system | login |
2 calls per second |
| Retrieve member count of specified channel(s) | getChannelMemberCount |
1 call per second |
| Join a different channel each time | join |
50 calls every 3 seconds |
| Join the same channel each time | join |
2 calls every 5 seconds |
| Send messages | sendMessageToPeersendMessageToPeer sendMessage sendMessage |
180 calls every three seconds |
| Retrieve a member list of the channel | getMembers |
5 calls every 2 seconds |
| Renew the token | RtmClient.renewToken |
2 calls per second |
| Query the online status of the specified user(s) | queryPeersOnlineStatus |
10 calls every 5 seconds |
| Set user attributes | setLocalUserAttributesaddOrUpdateLocalUserAttributesdeleteLocalUserAttributesByKeysclearLocalUserAttributes |
10 calls every 5 seconds |
| Get user attributes | getUserAttributesgetUserAttributesByKeys |
40 calls every 5 seconds |
| Set channel attributes | setChannelAttributesaddOrUpdateChannelAttributesdeleteChannelAttributesByKeysclearChannelAttributes |
10 calls every 5 seconds |
| Get channel attributes | getChannelAttributesgetChannelAttributesByKeys |
10 calls every 5 seconds |
| Subscribes to the online status of the specified user(s) | subscribePeersOnlineStatus |
10 calls every 5 seconds |
| Unsubscribes from the online status of the specified user(s) | unsubscribePeersOnlineStatus |
10 calls every 5 seconds |
| Gets a list of the peers, to whose specific status you have subscribed. | queryPeersBySubscriptionOption |
10 calls every 5 seconds |
| Subscribes to the online status of the specified user(s) | subscribePeersOnlineStatus |
10 calls every 5 seconds |
| Unsubscribes from the online status of the specified user(s) | unsubscribePeersOnlineStatus |
10 calls every 5 seconds |
| Gets a list of the peers, to whose specific status you have subscribed. | queryPeersBySubscriptionOption |
10 calls every 5 seconds |
RtmMessage.setText.LocalInvitation.setContent.RemoteInvitation.setResponse.filePath parameter of the following methods must be in UTF-8 format: