navigation

🌍ION


ION is a distributed real-time communication system, let people communicate anydevice, anytime, anywhere!

❇️License

📖Architecture


arch

🖥️Modules

  • BIZ — a distributed signal server
  • ISLB —a distributed load-balance|service-discovery server
  • SFU —a distributed media stream server
  • AVP —a distributed audio|video process server

☕️How to work

  • All modules connected to nats, exchange signals to each other through message queue
  • Clients connected to BIZ, exchange SDP or other signals with BIZ
  • BIZ will get an SFU node from ISLB, exchange SDP with SFU
  • Clients finally exchanged their SDP, They start ICE now
  • Clients will see videos from each other when ICE finished

🌟Feature


Front-End Stacks

  • Support almost all platforms: iOS, Android, Windows, macOS
  • Support many browsers: Chrome(recommend), Firefox, Safari, Edge
  • Support popular language SDKs/APPs: Flutter, TS, JS, GO, Swift
  • Fast development: Flutter—one code support all platforms

Back-End Stacks

  • Fast development, written by golang
  • High performance, continuous optimization
  • Distributed architecture, decoupling by nats
  • Support K8s/docker, easy to scale
  • Support grpc signal, easy to extend to jsonrpc
  • Support webrtc stacks, base on pion/webrtc: NACK/PLI/TWCC/REMB/RR/SR/Simulcast/SVC

Tips: You can learn go/webrtc/flutter/.. first if you are a newbie of RTC, see faq