Fast text chat, which also works during large events in which many people participate and where access to the Internet can be significantly limited.
To create a standard online messaging system we utilized websockets and combined them with a protobuf method of serializing data which resulted in fast and low data usage chats. To enable communication in places where access to the Internet is limited, we decided to use peer-to-peer mesh networks between nearby devices using existing connectivity technologies such as Bluetooth and WiFi. These networks are used to share text messages even when there is no phone service or Internet connection. It improves range and deliverability.
Live video streaming, both from the application and from the studio.
As a part of live video transmission, we separated two sources; live-streaming from the phone and video broadcasting from an external source.
For broadcasting from an external source, we use HLS, which stands for HTTP Live Streaming. To put it succinctly, HLS is a media streaming protocol for delivering visual and audio media to viewers over the Internet. The HLS streaming protocol chops up MP4 video content into short, 10-second chunks. HTTP then delivers these short clips to viewers. The only thing a user has to do is to paste the link to the source of the stream in the web version of the application. Thanks to this solution, we are able to assemble the transmission in the studio, and then make it available to the users, just like on tv.
An opportunity to have a voice connection with up to 100 users.
Creating a conference app that handles up to 100 users in one room was, without a doubt, a big challenge. Fortunately, we were armed with the right tools. For handling users' connections, we used Elixirs's amazing, lightweight processes. This allowed us to have lots of simultaneous users with good performance.
To handle voice connection, we used an open source tool called Janus. It is a WebRTC gateway, which allows voice (and even video!) connection between lots of users.