Real-time communications (RTC) are the near simultaneous exchange of information over any type of telecommunications service from the sender to the receiver in a connection with negligible latency, according to Search Unified Communications. Examples of real-time communications include:
- Voice over landlines and mobile phones
- VoIP
- Instant messaging (e.g., WhatsApp, WeChat, Facebook Messenger)
- Video and teleconferencing
- Robotic telepresence
Real-time communications can take place in half-duplex or full-duplex modes:
- Half-duplex RTC. Data transmission can happen in both directions on a single carrier or circuit but not at the same time.
- Full-duplex RTC. Data transmission can occur in both directions simultaneously on a single carrier or circuit.
Knowing these basic details, let’s list the 10 most popular Flutter libraries about RTC:
1. socket_io_client
Port of awesome JavaScript Node.js library Socket.io-client v2.0.1~v3.0.3 in Dart
See it on pub.dev
2. flutter_webrtc
Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.
See it on pub.dev
3. web_socket_channel
StreamChannel wrappers for WebSockets. Provides a cross-platform WebSocketChannel API, a cross-platform implementation of that API that communicates over an underlying StreamChannel.
See it on pub.dev
4. agora_rtc_engine
Flutter plugin to simply integrate Agora Video Calling or Live Video Streaming to your app with just a few lines of code.
See it on pub.dev
5. jitsi_meet
Jitsi Meet Plugin — A plugin for integrating open source Jitsi Meet API in flutter. Jitsi Meet is secure, fully-featured and allows completely free video conferencing made with https://jitsi.org
See it on pub.dev
6. agora_uikit
Flutter plugin to simply integrate Agora Video Calling or Live Video Streaming to your app with just a few lines of code.
See it on pub.dev
7. twilio_programmable_video
Flutter plugin for Twilio Programmable Video, which enables you to build real-time video call applications (WebRTC)
See it on pub.dev
8. signalr_core
ASP.NET Core SignalR Client written for Dart that is platform-independent, and can be used on both the command-line and the browser.
See it on pub.dev
9. socket_io
Port of JS/Node library Socket.io. It enables real-time, bidirectional and event-based communication cross-platform. Same as Socket.IO, this project allows you to create several Namespaces, which will act as separate communication channels but will share the same underlying connection.
See it on pub.dev
10. callkeep
iOS CallKit framework and Android ConnectionService for Flutter. Support FCM and PushKit.
Callkeep acts as an intermediate between your call system (RTC, VOIP…) and the user, offering a native calling interface for handling your app calls. This allows you (for example) to answer calls when your device is locked even if your app is terminated.
See it on pub.dev
I have worked with Agora, Jitsi, WebRTC and CallKeep in my projects, which together with FCM, you can create professional communication tools.