The documentation applies to: v0.8.0
At the moment, LET Portal only provides one-one video call. We don't have a plan for group call or meeting room. We are very appriciate if anyone can help us to build a draft version based on our source code.
Different with chat function based on SignalR web socket, video call is more complicated and it isn't easy to understand and deploy. So that we take this section for explaining How to develop it.
WebRTC is a real-time communication for the web, it is an open-source and supported by many big technology companies. By default, it is built-in on most of browsers such as Firefox, Chrome, Safari. Therefore, LET Portal builds video call function based on WebRTC and combine with SignalR for authentication.
LET Portal flow¶
Let's take a look on the negotication flow
Rest of the flow is exchanging info via SignalR in the middle. SignalR, in this flow, takes a role as Authentication Provider and Connection Router for device-call-device.
- Validate JWT Token
connectionIdof caller and callee to another
STUN serverinfo which has been stored in the server-side
- Maintain call state and prevent another incoming call from others
- Notify another when anyone drops a call
WebRTC P2P flow¶
After both users received
STUN server, they can create P2P connection and negotiate. We prefer to read this article for great explanation about WebRTC flow
STUN vs TUN server¶
The key different between
TURN server is
STUN allows the media will travel directly between two devices (P2P) and
TURN acts as proxy to transfer media between two devices.
But what exact situation to use
TURN rather than
STUN, which seems to be better? The answer is it depends on your Network and Deployment model.
For example, if you have a plan to deploy whole LET Portal in private network, you don't want to be public this system. So that you want to create or hire one
TURN server because
STUN can't detect your devices because of Firewall.
If you want to create your own
TURN server, you can try this NodeJs server. Unfounately, .NET Core isn't providing any open-source
If you know clearly about WebRT,
TURN, so you can choose your deployment model when you want to bring Video Call works. We just take some important notes below:
- Is LET Portal deployed in Private Network, and all devices use private network as well? Yes, choose
- IS LET Portal deployed in the internet and all devices use private network, Firewall prevents
NATclient? Yes, choose
- Where can I change
TURNserver? You can change it on Chat's appsettings.json, section
- Where can find
STUNservers in the internet? You can read this list
Public and Private
In term of network, public is a network which can be reached over the internet. Otherwise, private is a LAN network which can't be reached over the internet. In fact, you should choose
TURN server if your devices can't be detected by
NAT because Firewall prevents