Video call webApp. Clone of Google meet (not exactly).
Please excuse for the UI part, as intent of doing the project was to learn webRTC and build video call app only and not UI part.
https://video-call-webapp.vercel.app
WebRTC
socket.io
Peerjs
Nodejs
Reactjs
Redux toolkit
- Once user Join then he is added to list of online people(right side list)
- User can call to anyone from online list, just by clicking on person name from the list
In Direct call user can do following things:
a. user can show / hide his video to other person
b. user can speak / mute his audio to other person
c. user can share his screen
d. user can send messages to other person
- User can create a room, that room will be visible on list downside
- Online users can see all rooms
- anyone can join that room, just by clicking on the room name
- once user join the room, that's conference call
In Group call user can do following things:
a. user can show / hide his video to other persons
b. user can speak / mute his audio to other persons
Backend is deployed in Heroku platform using Heroku CLI
Frontend is deployed in Vercel platform
https://video-call-webapp.vercel.app
-
working of webRTC in theory, and in practise like, establishing webRTC connection between peers via signaling server, sending / receiving audio and video tracks between peers, sending / receiving data messages over webRTC connection
-
Implementaion of webRTC for Direct call (one-to-one call)
-
Implementation of Group Call / Conference call using Peerjs
-
Integration of socket.io in Direct call and Group call
-
Setting up TURN server for ICE candidates on Twilio platform
-
Integration of TURN server ICE candidates servers into our backend and frontend (client)
-
deploy frontend (reactjs) on Vercel
-
Deploying backend (nodejs) on Heroku
When a webRTC direct connection is not possible using the STUN server. (due to any reason)
So, in that case, communication can happens through TURN servers.
we can use TURN servers as relying server, means TURN server will act as intermediatory server.
than means, in this case, commutation between peers happens through TURN servers.
-
Clone this repo
-
goto main branch
-
goto frontend directory do npm install add .env file in main directory and add this content in that file REACT_APP_SERVER_URL=http://localhost:5000 run the app, npm start
-
goto backend directory do npm install add .env file in main directory and add this content in that file
PORT=5000 ACCOUNT_SID={ get it from any TURN server platform ex. Twilio } AUTH_TOKEN={ get it from any TURN server platform ex. Twilio }npm start
You are done