Frequently Asked Questions - Other
Estimated reading time: 7 minutes- How can I know if a user is online or offline?
- How to reconnect to Mesibo servers if there is a network issue?
- I am not getting connection status 1 - `online`
- How do I restrict user access tokens to a particular app or domain?
- How can my apps receive messages and calls after it goes to the background?
- What's the maximum file size I can send from clients?
- How can I moderate messages/filter profanity?
- Why doesn't Mesibo provide server-side profanity filter?
- Can I make users on multiple apps communicate with each other?
- Can I request custom features not available in Mesibo?
- How much bandwidth does a video call consumes?
- Why am I getting the TOKENBREACH error?
- How to keep a user online from multiple browser tabs using mesibo javascript API?
How can I know if a user is online or offline?
You can check a user’s current online status easily by calling the isOnline() function of the user profile. For more information, read profile and presence documentation in real-time APIs.
If you like to user online status on your server, you can configure a webhook to keep you informed in real-time about the user’s online status.
How to reconnect to Mesibo servers if there is a network issue?
Mesibo Client SDK detects network conditions and automatically reconnects to mesibo servers unless you call stop() explicitly. Therefore, you do not need to worry about network conditions and reconnection. mesibo Client SDK also informs your app (mesibo_onConnectionStatus)
about the network status which you can use it to take further app-specific actions.
However, once you call stop(), mesibo will not reconnect unless you call start() again.
I am not getting connection status 1 - `online`
If you are not getting connection status 1, and getting 4 or 5, you are not passing the correct appid while creating a token. The appid passed to create a token must match the Android package name declared in the AndroidManifest.xml (and google-services.json), Or iOS bundle id declared in the Xcode project (for example, com.mesibo.xxx ). If you are using Javascript API or other platforms, ensure that you pass the same app id to the setAppName
API call.
Also, ensure that you are NOT using the App Token. App Token must be secret and should only be used from the backend API. You MUST only use user token in your real-time API.
Refer tutorial here https://mesibo.com/documentation/tutorials/first-app/#create-users-endpoints
How do I restrict user access tokens to a particular app or domain?
User access tokens are only applicable to your App and issued only to authorized users by you and hence there is less possibility of anyone reusing it.
For Android and iOS, user access tokens are restricted to the Android package name or iOS bundle ID. They can not be used on apps having a different app or bundle ID. Refer to the User Management API to learn more, However, multiple apps with different package names or bundle ID can come under one mesibo app and can communicate with each other as long as you use corresponding package name or bundle ID while generating token for that particular app user.
For Javascript, there is no reliable method to detect domain or app name, and hence the same security policy does not apply. Domain and referrer methods used by many service providers (including Google) are subject to DNS or referrer spoofing and hence we do not want to offer a false sense of security to our users. We are investigating better methods. If you are particularly concerned, you can dynamically generate user access tokens for a short duration and destroy them after use. If you have other suggestions, we’d like to hear from you.
How can my apps receive messages and calls after it goes to the background?
In the past, apps could stay online even when running in the background. However, it’s no longer the case. Both Android and iOS will suspend the app after app moves to the background. Read more about Android and iOS background execution limits here and here.
However, Mesibo provides you an easy way to wake up your app from the sleep state when new messages or calls are received. All you need to do is to configure Mesibo Push Notifications. Mesibo will send push notification every time the destination is offline, which will trigger the app to move from the sleep state to the active state. Once the app moves to the active state, Mesibo will automatically connect and start receiving messages and calls. This entire process will be seamless for the user.
Alternatively, you can also configure a webhook every time a message or a call received while the app is in the sleep state. From the webhook, you can invoke a push notification yourself.
You may also refer to Mesibo sample app and backend source code to see how it is implemented there.
What's the maximum file size I can send from clients?
Mesibo allows you to upload all the files to your private servers or any of your other cloud servers (say, Google, Amazon EC2, Akamai etc), Hence There is no limit on the maximum file size.
How can I moderate messages/filter profanity?
Before sending any message or immediately after receiving a message, Mesibo calls a message filter set by your app Mesibo_onMessageFilter
. You can filter any words in the message or simply discard the message.
Why doesn't Mesibo provide server-side profanity filter?
Server-side message filtering is not at all recommended - although provided by some other API vendors. It completely defeats the privacy as the server needs to look into your messages and it simply won’t work with end-to-end encryption. Mesibo’s approach provides much more flexibility and works with end-to-end encryption.
However, you can use our on-premise server and profanity filter module.
Can I make users on multiple apps communicate with each other?
You can, if you use a single Mesibo application for all of those apps. In other words, you would have to have one application in your Mesibo Console, with its application ID shared among multiple apps.
Can I request custom features not available in Mesibo?
Certainly, please contact us with your feature requests.
How much bandwidth does a video call consumes?
A normal non-HD video call consumes approx 600kbps which translates to 0.25GB per hour per leg. Typically an HD (720p and above) call consumes 1-2 Mbps which translates to 1 GB of bandwidth per participant.
Why am I getting the TOKENBREACH error?
You will receive a TOKENBREACH error if your app token is used from multiple IP addresses.
One possible reason is that if you are using the App token from the client-side, it will be blocked for security reasons. Note that, you MUST not use the app token from the client-side. It’s a security and privacy violation. Your user will have complete access to everything including other users once they know your app token. Instead, your clients should communicate with your backend for any administrative tasks, for example, useradd, groupadd, etc. Your backend should invoke the mesibo API to carry out the requested operation.
Refer to Mesibo Backend APIs to learn more.
How to keep a user online from multiple browser tabs using mesibo javascript API?
At any instant, there can be only one mesibo connection per user. If a user is online from one tab, and your app tries to log in the same user from another tab, the user will be logged-out from the previous tab.
However, it is still possible to keep a user stay connected from multiple tabs (For example, the way Facebook messenger works). To achieve this, you will need to log in a user from one tab and then use the browser inter-tab communication mechanism to communicate from other tabs.
You can refer to the multiple-popup.html in the sample code that demonstrates how to use a single mesibo connection and inter-browser communication to create a multitab popup chat.