The Design and Architecture of a WebRTC Application

The aim of this thesis is to investigate existing design patterns for WebRTC applications in order to achieve a scalable, performant and efficient WebRTC application that keeps streams unique. Further, this thesis shows how these can be implemented using JavaScript technologies. Through a literature...

Full description

Bibliographic Details
Main Authors: Lööf, Alexander, Holm, Simon
Format: Others
Language:English
Published: Malmö universitet, Fakulteten för teknik och samhälle (TS) 2019
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:mau:diva-20239
id ndltd-UPSALLA1-oai-DiVA.org-mau-20239
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-mau-202392020-10-28T05:38:22ZThe Design and Architecture of a WebRTC ApplicationengLööf, AlexanderHolm, SimonMalmö universitet, Fakulteten för teknik och samhälle (TS)Malmö universitet, Fakulteten för teknik och samhälle (TS)Malmö universitet/Teknik och samhälle2019Real-time communicationWebRTCpeer to peerEngineering and TechnologyTeknik och teknologierThe aim of this thesis is to investigate existing design patterns for WebRTC applications in order to achieve a scalable, performant and efficient WebRTC application that keeps streams unique. Further, this thesis shows how these can be implemented using JavaScript technologies. Through a literature study, we conclude that the design patterns full mesh using a signaling server and star topology with a media server that relays streams, called Selective Forwarding Unit (SFU). Both these design patterns have quality attributes that are desirable. We propose an approach of combining these patterns in the same application in order to achieve a scalable application that can fit a broad spectrum of use cases while being efficient. As full mesh is performant and cost-effective in comparison to an SFU but does not scale well with increasing number of participants, we investigate ways to optimize a full mesh session to use it as long as possible before converting a session to using an SFU. We came up with a way to optimize a full mesh session by limiting the bandwidth used for the media streams which reduces the CPU usage for the clients. The proposed approach of combining full mesh and an SFU is implemented based on a previous WebRTC application and a high-level description of how that was achieved is included in this thesis. We perform an experiment where we measure the client’s CPU usage using the above-mentioned approaches in order to reinforce our findings. The result show that limiting the bandwidth of media streams can increase the possible number of participants in a full mesh session and that it is possible to transfer an ongoing session from full mesh to an SFU and back again. We conclude that combining these patterns in the same application is a viable strategy when creating a WebRTC application. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:mau:diva-20239Local 29191application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Real-time communication
WebRTC
peer to peer
Engineering and Technology
Teknik och teknologier
spellingShingle Real-time communication
WebRTC
peer to peer
Engineering and Technology
Teknik och teknologier
Lööf, Alexander
Holm, Simon
The Design and Architecture of a WebRTC Application
description The aim of this thesis is to investigate existing design patterns for WebRTC applications in order to achieve a scalable, performant and efficient WebRTC application that keeps streams unique. Further, this thesis shows how these can be implemented using JavaScript technologies. Through a literature study, we conclude that the design patterns full mesh using a signaling server and star topology with a media server that relays streams, called Selective Forwarding Unit (SFU). Both these design patterns have quality attributes that are desirable. We propose an approach of combining these patterns in the same application in order to achieve a scalable application that can fit a broad spectrum of use cases while being efficient. As full mesh is performant and cost-effective in comparison to an SFU but does not scale well with increasing number of participants, we investigate ways to optimize a full mesh session to use it as long as possible before converting a session to using an SFU. We came up with a way to optimize a full mesh session by limiting the bandwidth used for the media streams which reduces the CPU usage for the clients. The proposed approach of combining full mesh and an SFU is implemented based on a previous WebRTC application and a high-level description of how that was achieved is included in this thesis. We perform an experiment where we measure the client’s CPU usage using the above-mentioned approaches in order to reinforce our findings. The result show that limiting the bandwidth of media streams can increase the possible number of participants in a full mesh session and that it is possible to transfer an ongoing session from full mesh to an SFU and back again. We conclude that combining these patterns in the same application is a viable strategy when creating a WebRTC application.
author Lööf, Alexander
Holm, Simon
author_facet Lööf, Alexander
Holm, Simon
author_sort Lööf, Alexander
title The Design and Architecture of a WebRTC Application
title_short The Design and Architecture of a WebRTC Application
title_full The Design and Architecture of a WebRTC Application
title_fullStr The Design and Architecture of a WebRTC Application
title_full_unstemmed The Design and Architecture of a WebRTC Application
title_sort design and architecture of a webrtc application
publisher Malmö universitet, Fakulteten för teknik och samhälle (TS)
publishDate 2019
url http://urn.kb.se/resolve?urn=urn:nbn:se:mau:diva-20239
work_keys_str_mv AT loofalexander thedesignandarchitectureofawebrtcapplication
AT holmsimon thedesignandarchitectureofawebrtcapplication
AT loofalexander designandarchitectureofawebrtcapplication
AT holmsimon designandarchitectureofawebrtcapplication
_version_ 1719353378688991232