Socket.IO is a real-time bidirectional event-based communication library for Node.js and the browser. The repository is a monorepo containing multiple packages: the server (`socket.io`), client (`socket.io-client`), low-level transport layer (`engine.io`, `engine.io-client`), packet parsers (`engine.io-parser`, `socket.io-parser`), adapters for horizontal scaling (`socket.io-adapter`, `@socket.io/cluster-adapter`, `@socket.io/cluster-engine`), and emitters for cross-process communication (`@socket.io/postgres-emitter`, `@socket.io/redis-streams-emitter`). The architecture is layered: Engine.IO handles transport abstraction (HTTP long-polling, WebSocket, WebTransport) with upgrade mechanisms, while Socket.IO adds higher-level features like namespaces, rooms, acknowledgements, and connection state recovery. The client library provides automatic reconnection with exponential backoff, binary data support, and multiplexing across namespaces. The codebase is written in TypeScript with extensive test coverage, protocol documentation, and a rich set of examples demonstrating integration with various frameworks (React, Angular, Vue, Next.js, NestJS) and deployment patterns (clustering, load balancing, authentication).
Janus is a general-purpose WebRTC media server and gateway written in C. It provides a modular architecture with a core daemon that dynamically loads plugins for various use cases (video conferencing, audio bridging, streaming, SIP, etc.), transports (HTTP, WebSockets, MQTT, RabbitMQ, Unix sockets), and event handlers. The server handles ICE/DTLS/SRTP for WebRTC peer connections, relays RTP/RTCP media between participants, and supports advanced features like simulcast, SVC, recording, and post-processing. A JavaScript client library (janus.js) is provided for browser integration. The system is production-grade, actively maintained, and widely deployed.
Jitsi Meet is an open-source video conferencing platform that provides real-time communication with features such as HD audio/video, screen sharing, chat, polls, breakout rooms, recording, live streaming, virtual backgrounds, and end-to-end encryption. The architecture is client-server: the web and mobile clients (React/React Native) communicate via XMPP (Prosody server) for signaling and WebRTC for media, with optional server-side components like Jitsi Videobridge and Jicofo for scalable conferencing. The codebase is organized into feature modules under `react/features/`, each with its own Redux actions, reducers, middleware, and platform-specific UI components (web vs. native). Key entry points include `app.js` for the web app, `react/index.native.js` for mobile, and native SDKs for iOS and Android. External dependencies include Prosody, Jitsi Videobridge, Jicofo, and various third-party services (Google, Microsoft, Dropbox, Amplitude). The project also includes server-side Prosody plugins (Lua) for authentication, room management, and monitoring, as well as a comprehensive test suite using WebDriverIO and custom load testing frameworks.
react-native-webrtc is a React Native native module that provides a JavaScript API for WebRTC, enabling real-time communication in mobile apps. It wraps Google's WebRTC library (via a fork by Jitsi) and exposes standard WebRTC objects like RTCPeerConnection, MediaStream, and RTCDataChannel to React Native. The architecture is a typical React Native native module: TypeScript bindings in src/ communicate with Android Java and iOS Objective-C native code through the bridge. Key entry points include the module's index.ts and the native WebRTCModule classes. The library handles media acquisition (getUserMedia, getDisplayMedia), peer connection management, data channels, screen sharing, and video effects. It includes example apps for iOS, macOS, and tvOS, but no production app. Reusable components include a custom EventEmitter for native event handling, a Permissions wrapper, and video effect processor interfaces. Maintenance is active with recent commits, but the library has some technical drift: it targets an older React Native version (0.71) in dev dependencies, uses synchronous blocking native methods that may be deprecated, and relies on a custom WebRTC fork that requires separate maintenance. No automated tests exist beyond linting.
This repository provides flutter-webrtc, a Flutter plugin that wraps native WebRTC SDKs (Android, iOS, maccOS, Windowws, Linux, embedded Linux, and Web) to enable real-time audio/video communication, screen shaning, data channels, and end-to-end encryption. The architecture follows a common Dart interface with platform-specific implementations using method channels, event channels, and texture registries. Key entry points include the Dart factory classes (RTCFactoryNative/Web) and native plugin handlers (FlutterWebRTCPlugin on each platform). The plugin exposes a comprehensive WebRTC API including getUseMedia, peer connections, tranceivers, simulcast, stats, and E2EE via frame cryptors. It is actively maintained with regular commits and issue triage, but exhibits code duplication across platforms and some fragile patterns (reflection, monoilithic method handlers).
PeerJS Server is a Node.js application that facilitates WebRTC peer-to-peer connections by handling signaling between clients. It does not proxy media data but exchanges metadata (offers, answers, ICE candidates) via WebSocket connections. The server provides an HTTP API for obtaining client IDs and discovering peers (when enabled), manages client state and message queues for offline clients, and includes services to monitor connection health and expire stale messages. Built with Express.js and the 'ws' library, it features a modular architecture separating API routing, message handling, core logic (realm/model management), and background services (connection checking, message expiration). The CLI entry point allows running as a standalone server, while the programmatic API enables integration into existing Node.js applications.
FastRTC is a Python library that enables developers to build real-time audio/video streaming applications with minimal code. It provides a high-level `Stream` class that integrates with Gradio for automatic UI generation and supports both WebRTC and WebSocket protocols. The library includes built-in handlers for voice activity detection (VAD) via Silero, speech-to-text via Moonshine, text-to-speech via Kokoro/Cartesia, and turn-taking logic. It also offers TURN credential helpers for Cloudflare, Twilio, and Hugging Face. The architecture revolves around defining a handler function that processes media chunks, wrapping it with turn-taking decorators, and creating a Stream object that handles signaling, connection management, and UI rendering. The codebase is actively maintained with frequent commits and an extensive set of demos integrating with various LLMs and AI services.