This project is a full-stack video calling application. The backend is built using Spring Boot, WebRTC, WebSockets, and the frontend uses HTML, CSS, JavaScript, along with STOMP Client and SockJS for WebSocket communication.
- Real-time video and audio communication.
- User signaling using WebSockets.
- Interactive and responsive UI.
- Easy integration with WebRTC for peer-to-peer communication.
- STOMP protocol for WebSocket communication.
- Spring Boot: REST API and WebSocket server.
- WebRTC: Peer-to-peer video calling.
- WebSockets: Signaling mechanism.
- HTML, CSS, JavaScript: User interface.
- STOMP Client: Communication protocol over WebSockets.
- SockJS: Fallback support for WebSocket communication.
The application uses WebRTC for establishing peer-to-peer communication. A Spring Boot server acts as the signaling server to exchange metadata between peers (SDP and ICE candidates) using WebSockets.
Below is the system design diagram illustrating the flow of the application:
- Clone the repository:
git clone <repository-url> - Navigate to the backend directory:
cd backend - Build and run the Spring Boot application:
./mvnw spring-boot:run - Now open "https://localhost:3000" to access the frontend.
- Signaling:
- The client connects to the Spring Boot WebSocket server.
- Users exchange SDP (Session Description Protocol) and ICE (Interactive Connectivity Establishment) candidates through WebSockets.
- WebRTC Peer Connection:
- WebRTC APIs establish a peer-to-peer connection between users for audio and video streaming.
- Media Stream:
- Local media streams are captured using WebRTC and shared over the peer connection.
Contributions are welcome! Please fork the repository and create a pull request with your changes.
