laporanta 13510024 nicholas rio

96
BROWSER BASED LIVE STREAMING Laporan Tugas Akhir Disusun sebagai syarat kelulusan tingkat sarjana Oleh NICHOLAS RIO NIM : 13510024 PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TEKNIK ELEKTRO & INFORMATIKA INSTITUT TEKNOLOGI BANDUNG September 2014

Upload: nicholas-rio

Post on 03-Dec-2015

56 views

Category:

Documents


12 download

DESCRIPTION

Laporan TA Browser Based Live Streaming

TRANSCRIPT

Page 1: LaporanTA 13510024 Nicholas Rio

BROWSER BASED LIVE STREAMING

Laporan Tugas Akhir

Disusun sebagai syarat kelulusan tingkat sarjana

Oleh

NICHOLAS RIO

NIM : 13510024

PROGRAM STUDI TEKNIK INFORMATIKA

SEKOLAH TEKNIK ELEKTRO & INFORMATIKA

INSTITUT TEKNOLOGI BANDUNG

September 2014

Page 2: LaporanTA 13510024 Nicholas Rio

BROWSER BASED LIVE STREAMING

Laporan Tugas Akhir

disusun sebagai syarat kelulusan tingkat sarjana

Oleh

NICHOLAS RIO

NIM : 13510024

Program Studi Teknik Informatika

Sekolah Teknik Elektro dan Informatika

Institut Teknologi Bandung

Telah disetujui dan disahkan sebagai Laporan Tugas Akhir

di Bandung, pada tanggal …………. 2014

Pembimbing I, Pembimbing II,

Dr. Ir. MM. Inggriani Achmad Imam K, S.T. Msc, PhD

NIP. 19530116-197903-2-001 NIP. 19730809-200604-1-001

Page 3: LaporanTA 13510024 Nicholas Rio

i

LEMBAR PERNYATAAN

Dengan ini saya menyatakan bahwa:

1. Pengerjaan dan penulisan Tugas Akhir ini dilakukan tanpa menggunakan

bantuan yang tidak dibenarkan.

2. Segala bentuk kutipan dan acuan terhadap tulisan orang lain yang

digunakan di dalam penyusunan Laporan Tugas Akhir ini telah dituliskan

dengan baik dan benar.

3. Tugas Akhir ini belum pernah diajukan pada program pendidikan di

perGuruan tinggi mana pun.

Jika terbukti melanggar hal-hal di atas, saya bersedia dikenakan sanksi sesuai

dengan Peraturan Akademik dan Kemahasiswa Institut Teknologi Bandung

bagian Penegakan Norma Akademik dan Kemahasiswaan khususnya Pasal 2.1

dan Pasal 2.2.

Bandung,

Nicholas Rio

NIM 13510024

Page 4: LaporanTA 13510024 Nicholas Rio

ii

ABSTRAK

BROWSER BASED LIVE STREAMING

Oleh

NICHOLAS RIO

NIM : 13510024

Seiring dengan berkembangnya teknologi dan kecepatan internet, telah tercipta

berbagai layanan live streaming pada berbagai perangkat. Namun, masih ada

beberapa masalah pada aplikasi-aplikasi live streaming yang tersedia. Masalah –

masalah yang ada antara lain adalah masih diperlukan suatu aplikasi khusus untuk

melakukan live streaming, tidak ada protokol standar antar aplikasi dan integrasi

antar aplikasi masih sulit dilakukan.

Sebagai solusi dari masalah ini, dapat dikembangkan sebuah modul live streaming

yang menggunakan teknologi HTML5. Oleh karena itu, tujuan akhir dari Tugas

Akhir ini adalah sebuah modul live streaming yang digunakan pada aplikasi web.

Dalam rangka pembuatan sebuah modul live streaming, penulis melakukan

berbagai studi literatur mengenai streaming, software library, WebSocket, dan

WebRTC. serta eksplorasi pada aplikasi – aplikasi terkait. Modul aplikasi live

streaming dibuat dengan arsitektur jaringan peer to peer dengan sebuah signaling

server. Hasil testing menunjukkan bahwa signaling server yang dibuat dapat

menangani 1000 koneksi signaling konkuren, dan jumlah maksimal user dalam

satu room adalah 8 pengguna. Modul aplikasi juga sudah digunakan pada tiga

buah studi kasus yang berbeda, yaitu One to One Chat, Online Class, dan Video

Conference.

Kata kunci : live streaming, peer to peer, modul, media.

Page 5: LaporanTA 13510024 Nicholas Rio

iii

KATA PENGANTAR

Puji dan syukur penulis sampaikan ke hadirat Tuhan YME, karena dengan rahmat

dan karunia-Nya penulis dapat menyelesaikan Tugas Akhir ini. Tugas Akhir ini

dapat diselesaikan berkat bantuan dan dukungan dari berbagai pihak. Untuk itu

penulis ingin menyampaikan terima kasih kepada :

1. Bapak Dr. tech. Saiful Akbar, S.T., M.T. dan Bapak Dr. techn. Wikan

Danar Sunindyo, S.T., M.Sc selaku dosen penguji atas masukan dan

evaluasi yang telah diberikan pada saat seminar dan sidang.

2. Ibu Dr. Ir. M. M. Inggriani dan Bapak Achmad Imam Kistijantoro, S.T.,

M.Sc, Ph.D selaku dosen pembimbing untuk segala nasihat, pelajaran,

cerita dan dukungan semangat yang diberikan selama pelaksanaan Tugas

Akhir.

3. Seluruh dosen dari Program Studi Teknik Informatika ITB untuk didikan,

bimbingan, dan ilmu yang telah diberikan selama perkuliahan.

4. Ibu Titi Ratri Purnomo Wulan, A.Md. dan Ibu Sri Rahayu Setianingsih,

A.Md. dan seluruh pegawai Teknik Informatika ITB untuk bantuannya

selama proses pengerjaan Tugas Akhir.

5. Kedua orang tua dan adik atas doa, dukungan, perhatian dan semangat

yang diberikan.

6. Martha, Sharon, Jordan, Irfan, Edward, dan Kevin sebagai teman satu

bimbingan yang telah saling mendukung saat proses pengerjaan Tugas

Akhir.

7. Stefan, Endi dan Jeremy sebagai teman sekelas selama kuliah di Program

Studi Teknik Informatika.

8. Teman – teman lain dari berbagai organisasi di luar ITB untuk dorongan

semangatnya selama proses pengerjaan Tugas Akhir.

9. Semua pihak yang tidak dapat disebutkan satu per satu, yang telah

membantu pengerjaan Tugas Akhir baik secara langsung maupun secara

tidak langsung.

Semoga hasil Tugas Akhir ini dapat bermanfaat dan berguna bagi kemajuan ilmu

informatika. Penulis menerima dengan terbuka segala kritik dan saran

membangun dari pembaca. Terima kasih.

Bandung, September 2014

Nicholas Rio

13510024

Page 6: LaporanTA 13510024 Nicholas Rio

iv

DAFTAR ISI

ABSTRAK .......................................................................................................... ii

KATA PENGANTAR ....................................................................................... iii

DAFTAR ISI ..................................................................................................... iv

DAFTAR LAMPIRAN .................................................................................... vii

DAFTAR GAMBAR ....................................................................................... viii

DAFTAR TABEL ............................................................................................. xi

BAB I. PENDAHULUAN .................................................................................. 1

I.1. Latar Belakang ........................................................................................ 1

I.2. Rumusan Masalah ................................................................................... 3

I.3. Tujuan .................................................................................................... 3

I.4. Batasan Masalah ..................................................................................... 3

I.5. Metodologi ............................................................................................. 4

I.6. Sistematika Pembahasan ......................................................................... 4

BAB II. STUDI LITERATUR DAN EKSPLORASI ........................................ 6

II.1. Streaming ............................................................................................ 6

II.1.1. Definisi Streaming ......................................................................... 6

II.1.2. Cara Kerja Streaming .................................................................... 6

II.2. Eksplorasi Terhadap Aplikasi - Aplikasi Terkait .................................. 7

II.2.1. Skype ........................................................................................... 7

II.2.2. Google Hangouts ........................................................................ 8

II.3. Software Library .................................................................................. 9

Page 7: LaporanTA 13510024 Nicholas Rio

v

II.3.1. Definisi Software Library ............................................................ 10

II.4. HTML5 .............................................................................................. 10

II.4.1. WebSocket ................................................................................ 11

II.4.2. Web Real Time Communication .................................................. 14

BAB III. ANALISIS ......................................................................................... 16

III.1. Analisis pada Aplikasi Streaming yang Telah Ada ............................. 16

III.1.1. Analisis Kapabilitas ..................................................................... 16

III.2. Analisis Jaringan Peer to Peer dan Client - Server ............................. 17

III.3. Arsitektur Aplikasi Live Streaming .................................................... 19

III.4. Analisis Kebutuhan Modul Aplikasi ................................................... 22

III.5. Software Requirements ...................................................................... 22

III.6. Operational Requirements ................................................................. 23

III.7. Analisis Metode Pengiriman Data Media ........................................... 24

BAB IV. Pengembangan modul aplikasi live streaming................................. 28

IV.1. Platform Implementasi dan ................................................................ 28

IV.2. Perancangan dan Implementasi Modul Aplikasi Live Streaming ......... 28

IV.2.1. Perancangan dan Implementasi Kelas pada Modul Aplikasi Live

Streaming 29

IV.3. Collaboration Diagram pada Web Based Live Streaming Application 32

IV.4. Perancangan Pengujian Modul Aplikasi Live Streaming ..................... 37

IV.4.1. Tools Pengujian Modul Aplikasi Live Streaming ......................... 37

IV.4.2. Unit Testing Aplikasi Live Streaming .......................................... 37

IV.4.3. Load Test Aplikasi Live Streaming .............................................. 38

BAB V. STUDI KASUS ................................................................................... 40

Page 8: LaporanTA 13510024 Nicholas Rio

vi

V.1. Studi Kasus Pembuatan Aplikasi Web untuk One to One Chat ........ 40

V.1.1. Kebutuhan Fungsional ................................................................. 40

V.1.2. Rancangan Aplikasi ..................................................................... 41

V.1.3. Skenario Pengujian ...................................................................... 42

V.1.4. Hasil Benchmark ......................................................................... 45

V.1.5. Kesimpulan Studi Kasus .............................................................. 48

V.2. Studi Kasus Pembuatan Web Application untuk Online Class .......... 48

V.2.1. Kebutuhan Fungsional ................................................................. 49

V.2.2. Rancangan Aplikasi ..................................................................... 50

V.2.3. Skenario Pengujian ...................................................................... 51

V.2.4. Hasil Benchmark ......................................................................... 53

V.2.5. Kesimpulan Studi Kasus .............................................................. 57

V.3. Studi Kasus Pembuatan Web Application untuk Video Conference.. 57

V.3.1. Kebutuhan Fungsional ................................................................. 58

V.3.2. Rancangan Aplikasi ..................................................................... 58

V.3.3. Skenario Pengujian ...................................................................... 59

V.3.4. Hasil Benchmark ......................................................................... 63

V.3.5. Kesimpulan Studi Kasus .............................................................. 74

V.4. Kesimpulan Studi Kasus Keseluruhan ................................................ 75

BAB VI. Kesimpulan dan Saran ..................................................................... 76

VI.1. Kesimpulan ........................................................................................ 76

VI.2. Saran ................................................................................................. 76

DAFTAR REFERENSI ................................................................................... 78

Page 9: LaporanTA 13510024 Nicholas Rio

vii

DAFTAR LAMPIRAN

Lampiran A. MediaStream Processing API ..................................................... 79

Lampiran B. Hasil Unit Testing ....................................................................... 81

Lampiran C. Sequence Diagram ...................................................................... 82

Page 10: LaporanTA 13510024 Nicholas Rio

viii

DAFTAR GAMBAR

Gambar I-1 Ilustrasi Cara Kerja Streaming........................................................... 1

Gambar II-1 Aplikasi Skype ............................................................................... 8

Gambar II-2 Aplikasi Google Hangouts .......................................................... 9

Gambar II-3 Cara Kerja WebSocket (Wang, 2013). ........................................ 12

Gambar II-4 Sequence Diagram Siklus Hidup WebSocket .............................. 13

Gambar II-5 Pembentukan koneksi antar pengguna (Johnston, 2013). ................ 15

Gambar III-1 Ilustrasi Arsitektur peer to peer .................................................... 18

Gambar III-2 Ilustrasi Arsitektur client-server ................................................... 18

Gambar III-3 Arsitektur aplikasi live streaming Google Hangouts ................ 19

Gambar III-4 Arsitektur Modul Aplikasi Live Streaming Skype ....................... 20

Gambar III-5 Arsitektur Aplikasi dengan Modul Live Streaming ........................ 21

Gambar IV-1 Rancangan Arsitektur Aplikasi Live Streaming ............................. 29

Gambar IV-2 Diagram kelas modul aplikasi live streaming ................................ 31

Gambar IV-3 Collaboration Diagram Antar Node Pada Konfigurasi Node One to

One .................................................................................................................... 33

Gambar IV-4 Collaboration Diagram Antar Node dengan Konfigurasi Node One

To Many ............................................................................................................ 34

Gambar IV-5 Collaboration Diagram Antar Node pada Konfigurasi Jaringan

Many to Many .................................................................................................... 36

Gambar V-1 Diagram Kelas Aplikasi One to One Chat ................................. 41

Gambar V-2 Bitrate Video Pengguna Pertama ................................................... 45

Gambar V-3 Framerate Video Pengguna Pertama ............................................. 46

Page 11: LaporanTA 13510024 Nicholas Rio

ix

Gambar V-4 Bitrate Audio Pengguna Pertama ................................................... 46

Gambar V-5 Bitrate Video Pengguna Kedua ...................................................... 47

Gambar V-6 Framerate Video Pengguna Kedua ................................................ 47

Gambar V-7 Bitrate Audio Pengguna Kedua...................................................... 48

Gambar V-8 Diagram Kelas Aplikasi Online Class ........................................ 50

Gambar V-9 Bitrate Video Murid Pertama ......................................................... 54

Gambar V-10 Framerate Video Murid Pertama ................................................. 54

Gambar V-11 Bitrate Audio Murid Pertama ....................................................... 55

Gambar V-12 Bitrate Video Murid Kedua ......................................................... 56

Gambar V-13 Framerate Video Murid Kedua .................................................... 56

Gambar V-14 Bitrate Audio Murid Kedua ......................................................... 57

Gambar V-15 Diagram Kelas Aplikasi Video Conference ............................. 58

Gambar V-16 Bitrate Video Pengguna Pertama dari Pengguna Kedua ............... 64

Gambar V-17 Framerate Video Pengguna Pertama dari Pengguna Kedua ......... 64

Gambar V-18 Bitrate Audio Pengguna Pertama dari Pengguna Kedua ............... 65

Gambar V-19 Bitrate Video Pengguna Pertama dari Pengguna Ketiga ............... 65

Gambar V-20 Framerate Video Pengguna Pertama dari Pengguna Ketiga ......... 66

Gambar V-21 Bitrate Audio Pengguna Pertama dari Pengguna Ketiga ............... 67

Gambar V-22 Bitrate Video Pengguna Kedua dari Pengguna Pertama ............... 67

Gambar V-23 Framerate Video Pengguna Kedua dari Pengguna Pertama ......... 68

Gambar V-24 Bitrate Audio Pengguna Kedua dari Pengguna Pertama ............... 69

Gambar V-25 Bitrate Video Pengguna Kedua dari Pengguna Ketiga.................. 69

Gambar V-26 Framerate Video Pengguna Kedua dari Pengguna Ketiga ............ 70

Gambar V-27 Bitrate Audio Pengguna Kedua dari Pengguna Ketiga ................. 70

Page 12: LaporanTA 13510024 Nicholas Rio

x

Gambar V-28 Bitrate Video Pengguna Ketiga dari Pengguna Pertama ............... 71

Gambar V-29 Framerate Video Pengguna Ketiga dari Pengguna Pertama ......... 71

Gambar V-30 Bitrate Audio Pengguna Ketiga dari Pengguna Pertama ............... 72

Gambar V-31 Bitrate Video Pengguna Ketiga dari Pengguna Kedua .................. 73

Gambar V-32 Framerate Video Pengguna Ketiga dari Pengguna Kedua ............ 73

Gambar V-33 Bitrate Audio Pengguna Ketiga dari Pengguna Kedua ................. 74

Page 13: LaporanTA 13510024 Nicholas Rio

xi

DAFTAR TABEL

Tabel III-1 Perbandingan kapabilitas Skype dan Google Hangouts .............. 16

Tabel III-2 Perbandingan arsitektur peer to peer dan client - server.................... 17

Tabel III-3 Tabel Kompabilitas Browser dengan WebSocket .......................... 24

Tabel III-4 Tabel Kompabilitas Browser dengan API WebRTC ........................ 24

Tabel III-5 Analisis Metode Pengiriman Data Media.......................................... 25

Tabel III-6 Analisis Metode Sinkronisasi Media ................................................ 27

Tabel IV-1 Tabel Traceability Modul Live Streaming ........................................ 31

Tabel V-1 Tabel Kebutuhan Fungsional Aplikasi One to One Chat ................ 40

Tabel V-2 Skenario Normal Aplikasi One to One Chat .................................. 42

Tabel V-3 Skenario Alternatif Aplikasi One to One Chat ............................... 43

Tabel V-4 Kebutuhan Fungsional Aplikasi Online Class ................................ 49

Tabel V-5 Skenario Pertama Aplikasi Online Class ........................................ 51

Tabel V-6 Skenario Kedua Aplikasi Online Class ........................................... 52

Tabel V-7 Kebutuhan Fungsional Aplikasi Video Conference ....................... 58

Tabel V-8 Skenario Pertama Aplikasi Video Conference ............................... 60

Tabel V-9 Skenario Kedua Aplikasi Video Conference ................................. 62

Page 14: LaporanTA 13510024 Nicholas Rio

1

BAB I.

PENDAHULUAN

I.1. Latar Belakang

Streaming adalah pengiriman dan penampilan data multimedia secara langsung

dari penyedia layanan multimedia. Streaming menjadi persoalan yang khusus

karena selama data multimedia dikirim, data multimedia yang telah sampai

kepada pengguna layanan juga langsung ditampilkan tanpa menunggu data

menjadi lengkap. Data multimedia yang diterima ataupun dikirimkan dapat berupa

data video, audio, atau bahkan gambar dan teks saja.

Salah satu layanan streaming yang populer adalah live streaming. Pada layanan

streaming biasa, penyedia layanan telah menyimpan data multimedia yang akan

disajikan. Pada layanan live streaming, data multimedia disajikan secara real time.

Seiring dengan meningkatnya teknologi dan kecepatan internet dewasa ini, telah

dikembangkan berbagai layanan live streaming pada berbagai macam perangkat.

Contoh-contoh aplikasi live streaming yang sering digunakan antara lain adalah

Skype dan Google Hangouts yang telah tersedia baik pada PC maupun perangkat

mobile seperti smartphone dan tablet.

Gambar I-1 Ilustrasi Cara Kerja Streaming

Page 15: LaporanTA 13510024 Nicholas Rio

2

Masih ada masalah pada aplikasi-aplikasi live streaming yang tersedia. Masalah

pertama adalah bahwa suatu aplikasi khusus harus dipasang pada setiap

perangkat. Aplikasi-aplikasi tersebut hanya dapat beroperasi pada perangkat-

perangkat yang memenuhi spesifikasi tertentu. Sebagai contoh, untuk memasang

Skype for Android, diperlukan smartphone yang mempunyai prosesor ARM v7

(Skype, 2013).

Kedua, tidak ada protokol tertentu antar aplikasi live streaming. Seperti dikutip

dari jurnal Mobile Video Chat – Issues and Challenges (Shraboni Jana et al.,

2013): “Currently, end users using different video chat applications cannot

communicate with each other. This is because video chat applications use

different video codecs and technologies for system negotiation, which have not

been standardized yet.” (Jana, S. et al., 2013) . Sebagai akibat dari tidak adanya

protokol yang tetap antar aplikasi live streaming, tidak mungkin terjadi

komunikasi antar aplikasi live streaming yang berbeda.

Ketiga, aplikasi-aplikasi yang tersedia belum menyediakan cara yang mudah

untuk melakukan integrasi antara aplikasi tersebut dengan aplikasi-aplikasi lain.

Akibatnya, aplikasi-aplikasi lain yang hendak melakukan live streaming akan

menemui kesulitan untuk mengimplementasikan live streaming dengan mudah.

Keempat, pada aplikasi-aplikasi yang telah ada, walaupun tidak diperlukan

aplikasi khusus untuk dipasang pada perangkat yang hendak dipakai melakukan

live streaming, tetap dibutuhkan sebuah plug-in untuk memakai aplikasi yang

bersangkutan. Plug-in dapat menyebabkan masalah baru, antara lain ketika plug –

in yang sudah diunduh harus diperbarui jika ada perubahan pada aplikasi, atau

masalah kompatibilitas antara plug-in dan perangkat yang bersangkutan.

Untuk menyelesaikan seluruh masalah yang telah disebutkan tadi, dapat dirancang

suatu modul aplikasi live streaming yang dibuat di atas teknologi web dan HTML5.

Keunggulan implementasi di atas web adalah bahwa di hampir seluruh piranti

telah tersedia sebuah browser yang dapat membuka web. Selain itu, penggunaan

langsung kamera dan microphone komputer dari browser yang dahulu sulit

dilakukan, sekarang telah dapat dilakukan dengan cukup mudah. Sebagai

Page 16: LaporanTA 13510024 Nicholas Rio

3

hasilnya, penggunaan web dapat mengeliminasi beberapa masalah yang

ditimbulkan karena perbedaan perangkat.

Pada pembuatan modul aplikasi live streaming terdapat kebutuhan bahwa modul

live streaming harus bersifat reliable. Reliable dalam konteks ini berarti selama

koneksi internet tidak terputus dan tidak ada permintaan pemutusan koneksi dari

pengguna, modul aplikasi live streaming harus dapat menyajikan data secara

kontinu. Lebih jauh lagi, jika terjadi gangguan pada koneksi internet, modul live

streaming harus dapat menghubungkan kembali pengguna – pengguna yang

terlibat ketika koneksi internet kembali lancar. Selain itu, modul aplikasi live

streaming juga harus dapat digunakan pada berbagai piranti yang berbeda, seperti

smartphone dan komputer. Modul live streaming juga harus dapat di-reuse

dengan mudah pada berbagai aplikasi yang tersedia.

I.2. Rumusan Masalah

Untuk melakukan live streaming, satu-satunya cara yang tersedia saat ini adalah

dengan memasang aplikasi khusus yang menyediakan kapabilitas live streaming.

Pengembang juga belum mempunyai suatu cara yang mudah untuk memasukkan

kemampuan live streaming ke dalam aplikasi yang dibuat. Bagaimana cara

mengembangkan modul aplikasi live streaming berbasis web yang dapat

memudahkan pengembang memasukkan kemampuan live streaming ke dalam

aplikasinya?

I.3. Tujuan

Tujuan akhir dari Tugas Akhir ini adalah untuk mengkaji pembuatan modul

aplikasi live streaming berbasis web yang reliable dan reusable.

I.4. Batasan Masalah

Sejauh ini, belum ada batasan-batasan dalam pengerjaan Tugas Akhir ini.

Page 17: LaporanTA 13510024 Nicholas Rio

4

I.5. Metodologi

Metodologi pengerjaan Tugas Akhir ini mencakup studi literatur, eksplorasi

berbagai aplikasi live streaming yang telah ada, perancangan, implementasi, dan

pengetesan modul aplikasi live streaming pada aplikasi berbasis web.

Studi literatur dilakukan dengan cara membaca berbagai jurnal yang tersedia

mengenai live streaming, software library, HTML5, WebSocket dan berbagai topik

pendukung lainnya.

Eksplorasi berbagai aplikasi live streaming yang telah ada diperlukan untuk

mengetahui kemampuan dan arsitektur dari masing-masing aplikasi. Aplikasi-

aplikasi yang telah ada tersebut akan menjadi salah satu acuan dari perancangan

modul aplikasi live streaming yang akan dibuat.

Perancangan moudl aplikasi live streaming dimulai setelah studi literatur dan

eksplorasi aplikasi-aplikasi terkait dilakukan. Pertama-tama spesifikasi dari

aplikasi yang akan dibangun akan disusun terlebih dahulu. Kemudian dilakukan

perancangan arsitektur aplikasi live streaming.

Implementasi aplikasi live streaming akan dilakukan dengan mengacu pada

rancangan yang telah dihasilkan sebelumnya. Modul aplikasi live streaming akan

digunakan pula secara langsung pada suatu aplikasi berbasis web di server lokal.

Terakhir, akan dilakukan pengujian aplikasi live streaming yang telah dibuat.

Pengujian dilakukan untuk mengetahui apakah seluruh kebutuhan yang

dibutuhkan dari aplikasi tersebut telah dipenuhi. Pengujian juga dilakukan untuk

mengetahui reusability dan reliability modul aplikasi pada penggunaan nyata.

I.6. Sistematika Pembahasan

Pada Bab I, akan dibahas mengenai latar belakang, dasar permasalahan, tujuan

dan batasan masalah Tugas Akhir ini. Metodologi pengerjaan Tugas Akhir juga

dipaparkan pada bab I.

Pada Bab II, akan dibahas mengenai dasar teori yang diperlukan untuk dapat

memahami isi dokumen Tugas Akhir ini secara keseluruhan. Pertama-tama akan

dibahas tentang definisi dan cara kerja dari live streaming. Lalu akan dibahas pula

kapabilitas dan arsitektur dari aplikasi-aplikasi streaming yang telah tersedia.

Page 18: LaporanTA 13510024 Nicholas Rio

5

Kemudian akan dibahas tentang apa itu software library. Setelah itu, akan

dilakukan pembahasan yang berhubungan dengan teknis pengerjaan Tugas Akhir

seperti WebSocket dan WebRTC (Web Real Time Comunications).

Pada Bab III, akan dibahas mengenai analisis yang meliputi berbagai macam

kesulitan yang ada dalam pembuatan aplikasi live streaming. Pertama, akan

dilakukan pembahasan mengenai kapabilitas dan arsitektur aplikasi yang akan

dibuat, mengacu pada aplikasi-aplikasi serupa yang telah ada. Selanjutnya akan

dilakukan pembahasan mengenai analisis metode-metode pengiriman data

streaming. Terakhir akan dilakukan pembahasan mengenai metode sinkronisasi

berbagai channel yang ada pada data live streaming.

Pada Bab IV, akan dibahas mengenai perancangan, implementasi serta pengujian

dari aplikasi live streaming yang telah dibuat. Akan dikaji pula arsitektur aplikasi

live streaming yang dibuat serta rancangan kelas-kelas yang perlu dibuat. Pada

bab ini pula seluruh rancangan tersebut akan diimplementasikan menjadi sebuah

modul aplikasi live streaming. Setelah itu, akan dilakukan pengujian terhadap

reliabilitas aplikasi yang telah dibuat.

Pada Bab V, akan dibahas mengenai tentang studi kasus yang dilakukan untuk

membuat aplikasi web yang menggunakan modul live streaming. Studi kasus

dilakukan untuk mengetahui lebih lanjut apakah modul live streaming yang telah

dibuat dapat berfungsi dengan baik pada berbagai macam kondisi.

Pada Bab VI, akan dibahas kesimpulan yang didapat dari implementasi dan

pengujian aplikasi. Pada bab ini disimpulkan apakah aplikasi yang telah dibuat

dapat membantu berjalannya live streaming pada aplikasi berbasis web. Pada bab

ini akan dituliskan pula saran untuk pengembangan live streaming pada aplikasi

berbasis web di masa depan.

Page 19: LaporanTA 13510024 Nicholas Rio

6

BAB II.

STUDI LITERATUR DAN EKSPLORASI

Bab ini berisi hasil studi literatur maupun eksplorasi yang akan digunakan sebagai

referensi untuk mengembangkan aplikasi untuk melakukan live streaming pada

aplikasi berbasis web.

Pertama-tama, pada bab ini akan dibahas mengenai apa itu streaming. Kemudian

akan dijelaskan pula eksplorasi dari aplikasi-aplikasi live streaming yang telah

tersedia. Lalu, pada bab ini akan dijelaskan pula mengenai software library.

Terakhir, pada bab ini akan dijelaskan beberapa topik yang terkait pada teknis

implementasi aplikasi live streaming seperti WebSocket dan WebRTC.

II.1. Streaming

Pada subbab ini, akan dijelaskan tentang definisi streaming, dan bagaimana

streaming dilakukan.

II.1.1. Definisi Streaming

Streaming adalah suatu proses untuk mengirimkan dan menampilkan suatu konten

(Simpson, Wes. 2008). Konten yang dikirimkan dapat berupa video, gambar,

audio, atau bahkan hanya teks saja.

II.1.2. Cara Kerja Streaming

Secara umum, streaming dapat dilakukan dengan dua cara, yaitu : live streaming

dan progressive download and play.

Pada Live Streaming, sinyal media datang secara real-time dan ditampilkan juga

secara real-time. Live streaming yang dilakukan pada jaringan IP dilakukan

dengan cara mengambil data sinyal media, kemudian melakukan splitting pada

data tersebut sehingga data terbagi menjadi bagian-bagian yang lebih kecil. Data

tersebut kemudian dikirimkan sesuai dengan framerate dari media yang

dikirimkan.

Page 20: LaporanTA 13510024 Nicholas Rio

7

Pada Progressive download and play, media yang akan ditampilkan oleh server

harus terlebih dahulu tersedia. Media tersebut kemudian dibagi menjadi chunk-

chunk kecil dan dikirimkan kepada client. Data media tersebut kemudian

dikirimkan kepada client sesuai dengan urutannya.

Kedua cara tersebut membutuhkan sebuah streaming server yang bertanggung

jawab untuk mendistribusikan seluruh media yang di-stream kepada client. Salah

satu pekerjaan utama server adalah membuat paket yang berbeda untuk masing-

masing client. Setiap paket data yang terbentuk harus mengandung informasi IP

asal dan IP tujuan yang jelas agar sampai kepada client yang dituju. Selain itu,

stream yang dikirim dari server harus datang dalam aliran waktu yang stabil.

Kecepatan stream dari server tidak boleh berubah-rubah secara drastis karena

berpotensi merusak data media yang dikirimkan. Selain itu, streaming server yang

baik juga dapat mengatur besar data yang dikirimkan sesuai bandwith dari

penyedia dan pengguna layanan.

Contoh aplikasi yang menggunakan streaming adalah Skype dan Google

Hangouts.

II.2. Eksplorasi Terhadap Aplikasi - Aplikasi Terkait

Pada subbab ini dijabarkan beberapa aplikasi live streaming yang telah ada

beserta cara kerja dan fitur-fiturnya.

II.2.1. Skype

Skype pertama kali diluncurkan pada Agustus 2003. Beberapa kemampuan yang

ada pada aplikasi ini antara lain Video Call, menggunakan VoIP ataupun PSTN,

Video Conference, Desktop Sharing, Live chat, dan File transfer.

Page 21: LaporanTA 13510024 Nicholas Rio

8

Gambar II-1 Aplikasi Skype

Skype menggunakan suatu sistem yang menggabungkan konsep peer-to-peer dan

client-server. Sistem client-server digunakan untuk menghubungkan pengguna

saat pengguna akan memulai suatu panggilan, sedangkan sistem peer-to-peer

digunakan untuk komunikasi antar pengguna secara real-time. Untuk pengiriman

data, Skype menggunakan sebuah proprietary protocol yang disebut Skype

protocol. Codec audio yang digunakan adalah G.729, SVOPC dan SILK.

Sedangkan codec video yang digunakan adalah VP8 dan H.264.

II.2.2. Google Hangouts

Google Hangouts pertama kali diluncurkan pada Mei 2013. Beberapa fitur yang

ada pada aplikasi ini antara lain :

1. Video Call

2. Video Conference

3. Desktop Sharing

4. Live Chat

5. Short Messaging Service (hanya pada Android 4.4)

Page 22: LaporanTA 13510024 Nicholas Rio

9

Gambar II-2 Aplikasi Google Hangouts

Sebelum terbentuknya Google Hangouts, Google telah terlebih dahulu membuat

suatu produk yang disebut Google Talk. Google Talk menggunakan protokol

XMPP (Extensible Mesaging and Presence Protocol) untuk menangani data

komunikasinya. Namun, Google Hangouts menggunakan protokol tersendiri yang

bersifat proprietary.

Arsitektur aplikasi Google Hangouts bersifat client-server. Data yang dikirimkan

oleh masing-masing client dikirimkan kepada server terlebih dahulu. Server

kemudian melakukan sinkronisasi data dan mengirimkan kembali data media

kepada masing-masing client. Pendekatan ini dilakukan dengan pertimbangan

server yang dimiliki Google mampu menangani beban load yang cukup besar.

Untuk dapat menggunakan Google Hangouts, pengguna harus terlebih dahulu

mengunduh sebuah plug-in yang akan berjalan pada komputer masing-masing

pengguna. Plug-in tersebut digunakan untuk mendapatkan akses menuju

perangkat keras yang dimiliki komputer pengguna layanan.

II.3. Software Library

Pada subbab ini akan dijabarkan berbagai literatur mengenai definisi software

library, dan jenis-jenis software library.

Page 23: LaporanTA 13510024 Nicholas Rio

10

II.3.1. Definisi Software Library

Menurut Meyer (1997), Software Library adalah kumpulan dari implementasi

sejumlah class, functions, events dan behaviors. Tujuan utama pembuatan suatu

software library adalah untuk menciptakan kode yang reusable. Reusable berarti

library yang telah dibuat dapat digunakan ulang pada berbagai macam aplikasi

lainnya (Meyer, 1997).

Berdasarkan cara suatu library diakses oleh aplikasi yang menggunakannya, ada 2

jenis library yaitu static library dan dynamic library. Static library adalah library

yang diakses pada saat kompilasi program. Sedangkan dynamic library adalah

library yang diakses pada saat program berjalan.

Keunggulan dari static library adalah aplikasi yang menggunakan static library

tidak perlu khawatir mengenai versi dari library yang dipakai. Karena library

diakses ketika kompilasi program, seluruh kode library yang diperlukan telah

dimasukkan ke dalam program. Namun, hal ini juga berakibat pada besarnya hasil

kompilasi program.

Di sisi lain, dynamic library di sisi lain mempunyai keunggulan karena sifatnya

yang diakses pada saat program berjalan. Pada umumnya, dynamic library dapat

diakses oleh banyak aplikasi sekaligus. Selain itu, dynamic library juga lebih

mudah untuk di-update karena berada di luar aplikasi / program yang berjalan.

Dynamic library juga memungkinkan suatu aplikasi untuk memanggil sebuah

routine hanya ketika routine tersebut dibutuhkan.

II.4. HTML5

HTML5 adalah versi terbaru dari standar HTML (Hypertext Markup Language).

Menurut van Kesteren (2011), tujuan utama dari pengembangan HTML5 adalah

untuk meng-upgrade teknologi HTML agar mendukung teknologi multimedia

terbaru. Fitur – fitur yang menjadi tambahan pada HTML5 antara lain :

1. Canvas Element, berfungsi untuk mengambarkan grafik secara langsung

pada aplikasi web.

Page 24: LaporanTA 13510024 Nicholas Rio

11

2. Media Playback, berfungsi untuk menampilkan data media secara

langsung di dalam aplikasi web, tanpa melalui plug-in apapun. Dalam

implementasinya, ada dua tag HTML baru untuk melakukan media

playback. Tag baru tersebut adalah <video> untuk menampilkan video,

dan <audio> untuk menampilkan audio.

3. WebSocket, berfungsi untuk melakukan komunikasi dua arah antara client

dan server pada aplikasi web. Penjelasan lebih lanjut dijabarkan pada Bab

II.4.1.

4. Local Storage, berfungsi untuk menyimpan data secara lokal di dalam

browser milik client.

5. Drag and Drop, berfungsi untuk melakukan interaksi drag and drop pada

aplikasi web.

6. Geolocation, berfungsi untuk mengetahui lokasi dari client.

7. WebRTC (Web Real Time Communication), berfungsi untuk melakukan

komunikasi secara real time antar pengguna. Penjelasan lebih lanjut

dijabarkan pada Bab II.4.2.

Fitur-fitur HTML5 yang akan digunakan pada Tugas Akhir ini adalah WebSocket

dan Web Real Time Communication. Penjelasan lebih lanjut mengenai kedua fitur

tersebut dapat dibaca pada Bab II.4.1 dan Bab II.4.2.

II.4.1. WebSocket

Pada subbab ini dijelaskan tentang protokol WebSocket yang akan digunakan

pada Tugas Akhir ini.

II.4.1.1. Definisi WebSocket

Menurut Vanessa Wang (2013), WebSocket adalah sebuah API baru yang

diperkenalkan oleh HTML5. Sifat-sifat dari koneksi WebSocket adalah sebagai

berikut :

Page 25: LaporanTA 13510024 Nicholas Rio

12

1. Full-duplex : Trafik data pada suatu waktu berlangsung secara bersamaan

dari kedua arah (client dan server).

2. Bidirectional : Kedua belah pihak dapat mengirimkan data.

3. Single-socket connection : Hanya diperlukan satu socket untuk melakukan

koneksi dan komunikasi.

WebSocket dirancang untuk mengurangi latensi yang ditimbulkan oleh overhead

dari HTTP Request. Header dari sebuah HTTP Request berukuran lebih besar dari

800 byte, sedangkan header dari sebuah WebSocket berukuran tidak lebih dari 8

byte. Selain itu, berbeda dengan koneksi HTTP Request yang bersifat half-duplex,

koneksi dari WebSocket bersifat full-duplex yang memungkinkan terjadinya

interaksi yang lebih baik antara client dan server.

Gambar II-3 Cara Kerja WebSocket (Wang, 2013).

II.4.1.2. Siklus Hidup WebSocket

Untuk membuat koneksi dengan host tertentu, sebuah aplikasi web perlu

mengkonstruksi sebuah objek WebSocket dan mengkonfigurasi objek tersebut

dengan sebuah URL yang menyatakan domain host yang akan dihubungi. Koneksi

ke sebuah WebSocket server kemudian dilakukan dengan cara melakukan

upgrade protokol dari HTTP Protocol menjadi WebSocket Protocol. Upgrade ini

dilakukan dengan cara membuat sebuah HTTP Request untuk melakukan

handshake antara aplikasi web dengan host-nya. Setelah terkoneksi, aplikasi web

dengan host-nya dapat saling berkirim pesan dengan menggunakan fungsi-fungsi

yang telah didefinisikan oleh interface WebSocket.

Page 26: LaporanTA 13510024 Nicholas Rio

13

Ketika koneksi telah terbentuk, aplikasi web yang menggunakan WebSocket tidak

perlu mengirimkan request secara berkala kepada host. Aplikasi web dapat

memasang sebuah event listener pada objek WebSocket sehingga ketika didapat

pesan apapun dari server, aplikasi web akan mendapatkan notifikasi dari event

listener.

Koneksi antara aplikasi web dengan host-nya dapat kemudian dimatikan dengan

menggunakan fungsi close() pada objek WebSocket yang digunakan. Secara lebih

detil, siklus hidup dari sebuah WebSocket dapat dilihat pada Gambar II-4.

Gambar II-4 Sequence Diagram Siklus Hidup WebSocket

Page 27: LaporanTA 13510024 Nicholas Rio

14

II.4.2. Web Real Time Communication

Pada subbab ini dijelaskan tentang protokol Web Real Time Communications

(WebRTC) yang akan digunakan pada Tugas Akhir ini.

II.4.2.1. Definisi Web Real Time Communication

Menurut Johnston(2013), WebRTC adalah sebuah API yang digunakan untuk

melakukan real-time communication di dalam browser. WebRTC membuat real-

time communication dapat dilakukan hanya dengan menggunakan tag HTML5

standar dan Javascript, tanpa harus memasang sebuah perangkat lunak atau plug-

in. Fungsi-fungsi dari WebRTC berinteraksi dengan aplikasi berbasis web dengan

menggunakan API-API standar seperti HTML5 dan Javascript. Sedangkan untuk

berkomunikasi dengan sistem operasi, WebRTC bergantung pada aplikasi browser

yang digunakan. (Johnston, 2013).

II.4.2.2. Standar WebRTC

Hingga saat ini, standar resmi WebRTC masih dikembangkan bersama oleh dua

organisasi besar yaitu World Wide Web Consortium (W3C), dan Internet

Engineering Task Force (IETF). Proses ini diperkirakan akan selesai dan siap

dipublikasikan pada tahun 2014. Sejauh ini, fitur yang telah diimplementasikan

dengan sukses pada browser adalah fitur untuk mendapatkan data media dari user.

(Johnston, 2013).

II.4.2.3. Penggunaan WebRTC pada Pengolahan Data Media

Untuk memperoleh dan mengolah data dari kamera dan mikrofon secara langsung

di sebuah browser, tersedia fungsi interface MediaStream dan

NavigatorUserMedia yang telah distandardisasi oleh protokol WebRTC.

Spesifikasi dari interface MediaStream dan NavigatorUserMedia dituliskan pada

lampiran A.

Page 28: LaporanTA 13510024 Nicholas Rio

15

II.4.2.4. Koneksi dengan WebRTC

Untuk membuat koneksi WebRTC dengan client lain, diperlukan 4 langkah yaitu

(Johnston, 2013):

1. Mengambil data media pengguna,

2. Melakukan koneksi dengan pengguna lain,

3. Meng-attach data media ke dalam koneksi yang terbentuk,

4. Melakukan pertukaran data session description antara masing-masing

pengguna.

Gambar II-5 Pembentukan koneksi antar pengguna (Johnston, 2013).

Salah satu masalah yang muncul ketika ingin memulai sebuah koneksi dengan

pengguna lain adalah sedikitnya penguna yang mempunyai sebuah static public IP

Address. IP Address dari pengguna biasanya adalah sebuah private IP yang di-

assign dengan menggunakan DHCP server. Padahal untuk melakukan sebuah

koneksi, diperlukan public IP address. Oleh karena itu, dibutuhkan juga sebuah

STUN (Session Traversal Utilities for NAT) server untuk mengetahui public IP

seorang pengguna. Data STUN server dapat dimasukkan sebagai salah satu

konfigurasi ketika membentuk koneksi dengan pengguna lain.

Page 29: LaporanTA 13510024 Nicholas Rio

16

BAB III.

ANALISIS

Sebelum membangun sebuah aplikasi live streaming, perlu dilakukan berbagai

analisis terlebih dahulu. Pertama-tama, analisis akan dilakukan pada aplikasi live

streaming Skype dan Google Hangouts. Analisis ini dilakukan untuk mengetahui

fitur – fitur dari masing – masing aplikasi. Setelah itu, analisis berikutnya yang

dilakukan adalah mengenai arsitektur jaringan yang akan digunakan. Dua

alternatif jaringan yang dapat digunakan adalah Peer to Peer dan Client – Server.

Lalu, analisis akan dilakukan pada kemungkinan konfigurasi node yang berbeda –

beda. Barulah kemudian analisis akan dilakukan pada arsitektur modul aplikasi

live streaming dan metode pengiriman data.

III.1. Analisis pada Aplikasi Streaming yang Telah Ada

Analisis dilakukan pada Skype dan Google Hangouts. Analisis dilakukan pada

kapabilitas masing-masing aplikasi.

III.1.1. Analisis Kapabilitas

Berdasarkan aplikasi-aplikasi yang telah dipelajari pada Bab II.2, maka

kapabilitas masing-masing aplikasi dapat dilihat pada Tabel III-1.

Tabel III-1 Perbandingan kapabilitas Skype dan Google Hangouts

Fitur Skype Google Hangouts

Video Call Ya Ya

Video Conference Ya Ya

PSTN Ya Tidak

Short Messaging Service Tidak Ya (Android 4.4)

Desktop Sharing Ya Ya

Live Chat Ya Ya

File Transfer Ya Tidak

Page 30: LaporanTA 13510024 Nicholas Rio

17

Ada 4 fitur yang diimplementasi baik oleh Skype maupun Google Hangouts yaitu

Video Call, Video Conference, Desktop Sharing dan Live Chat. Seluruh fitur

tersebut dapat diimplementasi pada aplikasi live streaming. Oleh karena itu,

aplikasi live streaming akan mengimplementasi fitur Video Call, Video

Conference, Desktop Sharing dan Live Chat.

III.2. Analisis Jaringan Peer to Peer dan Client - Server

Dalam pengembangan aplikasi live streaming, arsitektur jaringan yang umum

digunakan adalah peer to peer dan client - server. Pada arsitektur jaringan peer to

peer, para pengguna saling terhubung dan mengirimkan data media secara

langsung pada pengguna lainnya. Sedangkan pada arsitektur jaringan client –

server, para pengguna terhubung ke sebuah server, menerima data media dari

server dan mengirimkan data media hanya kepada server saja. Tabel III-2

memperlihatkan perbandingan antara arsitektur jaringan peer to peer dan client –

server.

Tabel III-2 Perbandingan arsitektur peer to peer dan client - server

Aspek Peer to peer Client - server

Beban jaringan Ringan Berat

Kemudahan Sinkronisasi Sulit Mudah

Implementasi Mudah Sulit

Kelebihan penggunaan arsitektur peer to peer antara lain adalah berkurangnya

beban pada server. Selain itu, dengan kualitas jaringan yang semakin baik dewasa

ini, koneksi antar pengguna dapat berjalan dengan baik. Namun, penggunaan

arsitektur peer to peer antar pengguna menimbulkan masalah baru. Penggunaan

arsitektur peer to peer berarti kualitas perangkat keras dan jaringan pengguna

mengakibatkan pengaruh yang sangat besar.

Page 31: LaporanTA 13510024 Nicholas Rio

18

Gambar III-1 Ilustrasi Arsitektur peer to peer

Arsitektur client-server mengharuskan aplikasi web dibagi bebannya pada server

yang tersebar merata di berbagai lokasi agar beban yang ditimbulkan oleh aplikasi

streaming dapat ditangani oleh berbagai server yang tersedia. Masalah baru akan

muncul ketika beberapa server mengalami gangguan, yang menyebabkan

terjadinya overload pada server-server yang lainnya. Selain itu, dengan API

WebRTC yang tersedia, penggunaan model client-server mengakibatkan beban

yang besar pada client untuk memproses data media dan mengolahnya sebelum

siap dikirimkan kepada server.

Gambar III-2 Ilustrasi Arsitektur client-server

Dari segi pengembangan aplikasi, pengembangan aplikasi dengan menggunakan

arsitektur peer to peer mempunyai tingkat kesulitan yang lebih mudah. Pada

arsitektur peer to peer, koneksi antar pengguna dapat dilakukan hanya dengan

menggunakan signaling server dan API dari WebRTC. Proses pengiriman data

Page 32: LaporanTA 13510024 Nicholas Rio

19

dapat dilakukan dengan menggunakan API RTCPeerConnection dan

MediaStream dari WebRTC. Namun, diperlukan pembuatan kelas Initiator

tersendiri karena ada beberapa parameter yang berbeda di browser yang berbeda.

(Johnston, 2013).

Penggunaan arsitektur jaringan client – server memungkinkan penulisan aplikasi

yang tidak bergantung pada browser yang digunakan. Namun, pemrosesan

pengambilan dan pengolahan data secara manual sangat sulit dilakukan

berdasarkan API yang tersedia. Hal ini disebabkan karena browser mengenkripsi

data media yang telah tersedia, sehingga untuk mengolahnya secara lebih lanjut

diperlukan proses dekripsi terlebih dahulu, yang pada akhirnya membuat waktu

pengolahan menjadi sangat panjang. Oleh karena itu, pembuatan aplikasi live

streaming akan menggunakan arsitektur jaringan peer to peer dan sebuah

signaling server.

III.3. Arsitektur Aplikasi Live Streaming

Arsitektur aplikasi live streaming pada aplikasi Google Hangouts digambarkan

seperti pada gambar III-3.

Gambar III-3 Arsitektur aplikasi live streaming Google Hangouts

Page 33: LaporanTA 13510024 Nicholas Rio

20

Aplikasi Google Hangouts menggunakan sebuah server untuk melakukan

streaming kepada pengguna-pengguna yang terhubung. Setiap pengguna

terhubung kepada server Google, kemudian mengirimkan dan menerima data

stream dari Google. Arsitektur aplikasi live streaming pada aplikasi Skype dapat

dilihat pada Gambar III.4.

Gambar III-4 Arsitektur Modul Aplikasi Live Streaming Skype

Dari Gambar III-3 dan Gambar III-4, dapat disimpulkan bahwa ada beberapa

perbedaan antara arsitektur aplikasi live streaming yang umum dipakai dengan

arsitektur aplikasi live streaming pada Tugas Akhir ini. Perbedaan-perbedaan

antara kedua arsitektur tersebut adalah sebagai berikut.

1. Pada Gambar III-3, terdapat sebuah streaming server. Sedangkan pada

Gambar III-4, terdapat sebuah signaling server.

2. Pada Gambar III-3, semua client tidak saling terhubung satu dengan yang

lain. Sedangkan pada Gambar III-4, semua client saling terhubung secara

peer to peer.

3. Pada Gambar III-3, semua proses pengolahan dan encoding data media

dilakukan pada server. Sedangkan pada Gambar III-4, semua proses

Page 34: LaporanTA 13510024 Nicholas Rio

21

pengolahan dan encoding data media dilakukan pada masing-masing

client.

Seperti telah dibahas pada Bab III.2, modul aplikasi live streaming akan dibuat

dengan menggunakan koneksi peer to peer dan sebuah signaling server. Signaling

server digunakan untuk menginisialisasi koneksi antar node, sedangkan

komunikasi dan pengiriman data antar node akan dilakukan secara peer to peer.

Maka, arsitektur yang dipakai dalam Tugas Akhir ini hampir sama dengan Skype.

Namun, terdapat perbedaan bahwa modul aplikasi yang dibuat berjalan

sepenuhnya sebagai aplikasi web. Secara lebih detil, rancangan arsitektur modul

aplikasi live streaming pada Tugas Akhir ini digambarkan pada Gambar III – 5.

Gambar III-5 Arsitektur Aplikasi dengan Modul Live Streaming

Modul yang berada pada area arsir merah adalah modul-modul yang menangani

live streaming pada aplikasi yang dibuat.

Page 35: LaporanTA 13510024 Nicholas Rio

22

Server side module berfungsi sebagai sarana client untuk memulai koneksi peer to

peer dengan client lainnya. Selain menghubungkan client, server juga berfungsi

untuk memvalidasi request dari client.

Client side module berfungsi untuk mengambil dan mengirimkan data media

tersebut kepada client – client lain yang saling terhubung. Modul – modul pada

sisi client berjalan di atas browser yang kompatibel dengan HTML5 dan WebRTC.

III.4. Analisis Kebutuhan Modul Aplikasi

Aplikasi web pada Tugas Akhir ini terdiri dari 2 modul besar, yang masing-

masing adalah server side module dan client side module. Modul pertama yang

dibuat adalah implementasi server WebSocket. Sebuah server WebSocket harus

mempunyai skalabilitas yang tinggi agar dapat menangani banyak client secara

bersamaan dalam suatu waktu. Selain itu, untuk mendukung pengembangan

aplikasi server ini, diperlukan suatu library / framework / bahasa pemrograman

yang sudah cukup dikenal, dan terdapat basis massa pengguna yang cukup tinggi.

Oleh karena itu, Tugas Akhir ini akan menggunakan NodeJS untuk

mengimplementasi pembuatan server WebSocket. NodeJS dipilih karena selain

mempunyai basis massa penguna yang tinggi, NodeJS memang secara khusus

didesain untuk menangani koneksi konkuren dalam jumlah yang besar.

Modul kedua yang dibuat adalah client side module, yang berbentuk script dan

diaktifkan oleh browser. Modul ini akan mengambil data dengan menggunakan

interface NavigatorUserMedia dan MediaStream yang telah tersedia, kemudian

mengirimkannya dengan menggunakan protocol RTCPeerConnection.

III.5. Software Requirements

Ada dua modul aplikasi pada aplikasi live streaming, yaitu pada server side

module dan client side module. Kapabilitas dari server side module adalah aplikasi

live streaming dapat menginisialisasi koneksi antar node melalui signaling server

atas permintaan pengguna.

Page 36: LaporanTA 13510024 Nicholas Rio

23

Software Requirements dari client side module adalah sebagai berikut.

1. Aplikasi live streaming dapat mengirimkan dan menerima data media dari

satu node ke node lainnya. Satu node adalah satu aplikasi yang membuka

browser untuk menjalankan aplikasi live streaming, dan sudah terdaftar

pada server.

2. Satu node yang telah terdaftar dapat berhubungan dengan node lain secara

one to one, one to many, dan many to many.

3. Aplikasi live streaming dapat melakukan terminasi koneksi antar node atas

permintaan pengguna.

III.6. Operational Requirements

Piranti yang digunakan harus mempunyai kapabilitas untuk mengakses jaringan

internet. Hal ini karena kedua modul yang dibuat hanya dapat berkomunikasi

melewati jaringan internet. Selain itu, piranti yang digunakan bukan hanya

desktop maupun laptop, melainkan juga piranti mobile seperti smartphone dan

tablet. Penggunaan berbagai macam piranti tersebut digunakan untuk menguji

apakah modul-modul tersebut sudah dapat digunakan dengan baik pada berbagai

macam perangkat. Perbedaan User Interface antar piranti diimplementasi pada

berkas CSS aplikasi.

Perangkat lunak yang digunakan adalah browser yang telah mendukung protokol

WebSocket serta API WebRTC yaitu MediaStream dan NavigatorUserMedia.

Browser yang telah mendukung protokol WebSocket dapat dilihat pada

Tabel III-3.

Page 37: LaporanTA 13510024 Nicholas Rio

24

Tabel III-3 Tabel Kompabilitas Browser dengan WebSocket

Nama Browser Mengimplementasi WebSocket Versi Minimum

Internet Explorer Ya 10.0

Mozilla Firefox Ya 21.0

Google Chrome Ya 21.0

Safari Ya 6.0

Opera Ya 12.1

Browser yang telah mendukung API WebRTC dapat dilihat pada Tabel III-4.

Tabel III-4 Tabel Kompabilitas Browser dengan API WebRTC

Nama Browser Mengimplementasi WebRTC Versi Minimum

Internet Explorer Tidak -

Mozilla Firefox Ya 30.0

Google Chrome Ya 27.0

Safari Tidak -

Opera Ya 23.0

Oleh karena itu, dapat disimpulkan bahwa browser yang dapat digunakan untuk

menggunakan modul aplikasi live streaming adalah Mozilla Firefox, Google

Chrome dan Opera.

Pada sisi client, aplikasi dikembangkan dengan menggunakan bahasa HTML5 dan

Javascript. Sedangkan pengembangan modul untuk server akan menggunakan

bahasa Javascript yang telah dikustomisasi khusus untuk pembuatan aplikasi

berbasis web yaitu NodeJS.

III.7. Analisis Metode Pengiriman Data Media

Pada implementasi live streaming, data media harus dikirimkan secara real time

antar pengguna selama pengguna masih saling terhubung. Agar data media dapat

dikirim dengan cepat, data yang dikirimkan sebisa mungkin berukuran kecil.

Selain itu, metode pengiriman data yang digunakan harus mempunyai

Page 38: LaporanTA 13510024 Nicholas Rio

25

kompatibilitas yang baik dengan browser, dan tidak membebani server ketika

jumlah pengguna bertambah.

Ada tiga metode pengiriman data media yang dapat dipakai untuk melakukan live

streaming dari browser.

1. Menggunakan HTTP Polling

HTTP Polling dilakukan dengan cara mengumpulkan data media,

kemudian dikirimkan melalui AJAX request. Pada setiap request, header

HTTP Request berukuran sebesar 800 byte.

2. Menggunakan WebSocket

Koneksi WebSocket bersifat full-duplex, sedangkan header-nya berukuran

maksimal 8 byte. WebSocket merupakan salah satu bagian dari protokol

standar HTML5 yang baru. Untuk mengimplementasikan WebSocket,

diperlukan juga server WebSocket yang beroperasi dengan baik.

Pengiriman data dilakukan dengan cara mengumpulkan data media,

kemudian dikirimkan langsung ke server WebSocket.

3. Menggunakan RTCPeerConnection

RTCPeerConnection menggunakan API yang disediakan pada WebRTC.

Protokol ini memungkinkan terjadinya koneksi peer to peer antar browser.

Pengiriman data dilakukan dengan cara mengumpulkan data media,

kemudian dikirimkan ke masing-masing browser yang saling terkoneksi

satu sama lain.

Kelebihan dan kekurangan masing-masing metode dijabarkan pada Tabel III-5 :

Tabel III-5 Analisis Metode Pengiriman Data Media

Faktor HTTPPolling WebSocket RTCPeerConnection

Besar header data Minimal 800 byte 8 byte 8 byte

Kompatibilitas

dengan browser

Mudah Sedikit Sulit Sulit

Skalabilitas Buruk Baik Sangat Baik

Page 39: LaporanTA 13510024 Nicholas Rio

26

Maka berdasarkan pertimbangan pada Tabel III-5, pengiriman data akan

dilakukan dengan menggunakan metode RTCPeerConnection.

Selain metode pengiriman data, cara penerimaan dan pengiriman media juga perlu

dikaji untuk memperhitungkan kecepatan streaming, waktu yang dibutuhkan

untuk melakukan sinkronisasi serta reliabilitas dari server streaming. Ada tiga

cara penerimaan dan pengiriman media yang dapat dilakukan.

1. Aplikasi meminta data video dari client, kemudian mengirimkannya

kepada client – client lain yang saling terhubung,

2. Aplikasi meminta data gambar dan audio dari client secara terpisah,

kemudian digabungkan dan dijadikan data video sebelum kembali

dikirimkan ke client,

3. Aplikasi meminta data gambar dan audio dari client secara terpisah,

kemudian digabungkan secara terpisah dan dikirimkan dalam dua saluran

yang berbeda pada client.

Meminta data video dari pengguna tidak sulit dilakukan, karena sudah tersedia

secara default pada protokol WebRTC yang telah diimplementasi. Data video dari

pengguna kemudian dapat dikirimkan kepada setiap pengguna lain yang saling

berhubungan.

Pengiriman data dapat pula dilakukan dengan cara meminta data gambar dan

audio dari client secara terpisah, kemudian digabungkan dan dijadikan data video

sebelum kembali dikirimkan ke client. Sebagai akibat dari terpisahnya data

gambar dan data audio yang dikirimkan dari client, data gambar dan data audio

menjadi saling independen. Ketika salah satu saluran (gambar atau audio)

mengalami gangguan, saluran yang lain masih tetap dapat berjalan dengan baik.

Namun penggabungan menjadi satu data video dari beberapa data gambar dan

audio juga masih memerlukan waktu komputasi yang cukup lama sehingga sulit

dilakukan secara real time.

Metode terakhir adalah meminta data gambar dan audio dari client secara terpisah,

kemudian digabungkan secara terpisah dan dikirimkan melalui dua saluran yang

Page 40: LaporanTA 13510024 Nicholas Rio

27

berbeda pada client. Keunggulan dari cara ini adalah data gambar dan audio dapat

dikirimkan secara terpisah dan tidak saling menunggu. Selain itu, penggabungan

data gambar dan audio secara terpisah membutuhkan waktu komputasi yang

relatif lebih sedikit ketimbang mengolahnya menjadi video terlebih dahulu.

Namun, penggabungan dan pengiriman data secara terpisah memungkinkan suatu

paket data gambar dan audio yang terjadi pada waktu yang sama, sampai ke

tujuan dalam waktu yang jauh berbeda.

Rangkuman dari analisis cara pengiriman data media dapat dilihat pada

Tabel III-6.

Tabel III-6 Analisis Metode Sinkronisasi Media

Cara Waktu

komputasi

Kesulitan

sinkronisasi

Reliabilitas

Meminta data video dari

client

cepat mudah Baik

Meminta data gambar dan

audio, kemudian

dijadikan video

lama sedang Baik

Meminta data gambar dan

audio, kemudian

dikirimkan terpisah

sedang mudah Baik

Berdasarkan hasil analisis pada Tabel III-6, maka metode yang dipilih adalah

dengan meminta data video dari client, kemudian mengirimkannya kepada

masing-masing client yang terhubung.

Page 41: LaporanTA 13510024 Nicholas Rio

28

BAB IV.

PENGEMBANGAN MODUL APLIKASI LIVE STREAMING

Pengembangan aplikasi live streaming terdiri atas beberapa tahap, yaitu

perancangan dan implementasi modul aplikasi dan pengujian modul pada aplikasi

berbasis web.

IV.1. Platform Implementasi dan

Implementasi aplikasi live streaming akan dilakukan menggunakan bahasa

pemrograman Javascript pada client side dan NodeJS pada server side.

Lingkungan perangkat keras yang digunakan untuk pengembangan adalah sebagai

berikut.

1. Prosesor Intel Core i5-2500 @ 3.3 GHz (4 CPU)

2. RAM 8096 MB

3. Harddisk 1 TB + SSD 128 GB

Lingkungan perangkat lunak untuk pengembangan sebagai berikut :

1. Sistem Operasi Ubuntu 13.10 64-bit

2. Sublime Text 2 (free edition)

IV.2. Perancangan dan Implementasi Modul Aplikasi Live Streaming

Implementasi modul aplikasi live streaming dilakukan dengan menggunakan fitur

RTCPeerConnection yang telah diimplementasikan sebagai fitur WebRTC.

WebSocket digunakan untuk membuat koneksi antar client yang akan saling

berhubungan. Setelah koneksi terbentuk, RTCPeerConnection akan dapat

mengirimkan data dari kamera dan mikrofon kepada client lain yang terhubung

dengannya.

Pada koneksi one to one, handshake antar client hanya perlu dilakukan satu kali.

Namun pada koneksi one to many, handshake dan pertukaran session description

harus dilakukan sesuai dengan jumlah koneksi. Sebagai contoh, bila ada hubungan

Page 42: LaporanTA 13510024 Nicholas Rio

29

antara 1 dengan 3 node lainnya, maka akan dilakukan 3 kali handshake dan 3 kali

pertukaran session description.

Pada koneksi many to many, handshake dan pertukaran session description harus

dilakukan sesuai dengan total jumlah koneksi yang terjadi. Sebagai contoh, bila

empat node saling berhubungan satu sama lain, maka setiap node akan melakukan

tiga kali handshake dan tiga kali pertukaran session description.

IV.2.1. Perancangan dan Implementasi Kelas pada Modul Aplikasi Live

Streaming

Rancangan arsitektur dari aplikasi yang menggunakan modul live streaming

digambarkan pada Gambar IV-1.

Gambar IV-1 Rancangan Arsitektur Aplikasi Live Streaming

Dari rancangan pada Gambar IV-1, aplikasi pada Tugas Akhir ini terdiri atas dua

modul besar yaitu server side module dan client side module. Ada satu buah kelas

Page 43: LaporanTA 13510024 Nicholas Rio

30

pada sisi server yaitu kelas Server. Sedangkan pada client side module, ada

empat buah kelas yaitu Initiator, Media, Peer dan Main.

Kelas pada server side module adalah sebagai berikut.

1. Kelas Server adalah kelas yang bertanggung jawab untuk saling berkirim

pesan dengan client. Server juga bertanggung jawab untuk memvalidasi

setiap pesan yang masuk dari client sebelum dikirimkan kepada client lain.

Sedangkan kelas-kelas pada client side module adalah sebagai berikut.

1. Kelas Initiator adalah kelas yang bertanggung jawab untuk melakukan

penyesuaian parameter-parameter WebRTC pada browser yang berbeda –

beda. Sebelum melakukan penyesuaian, kelas Initiator juga akan

melakukan pengecekan kompatibilitas browser untuk memastikan browser

yang dipakai sudah mendukung fitur WebRTC.

2. Kelas Media adalah kelas yang bertanggung jawab untuk mendapatkan

data media dari kamera dan mikrofon pengguna. Data ini diperoleh dengan

menggunakan fitur WebRTC yang telah diimplementasi pada browser.

Kelas ini bertanggung jawab juga untuk menampilkan data media yang

diterima, baik dari pengguna atau pengguna lainnya.

3. Kelas Peer adalah kelas yang bertanggung jawab untuk melakukan

koneksi, baik dengan signaling server maupun dengan client lain. Selain

melakukan koneksi, kelas ini juga bertanggung jawab untuk mengirimkan

data media dan menangani pesan – pesan yang datang dari server atau

client lainnya.

4. Kelas Main adalah kelas utama yang akan menjalankan kelas – kelas lain

yang ada pada client side module.

Diagram kelas dari modul aplikasi live streaming dapat dilihat pada Gambar IV-2.

Page 44: LaporanTA 13510024 Nicholas Rio

31

Gambar IV-2 Diagram kelas modul aplikasi live streaming

Ada sedikit perbedaan antara diagram kelas dengan rancangan arsitektur pada

Gambar IV-2, yaitu pada kelas Peer. Kelas Peer dijadikan sebuah interface

karena adanya perbedaan konfigurasi node yang memerlukan perlakuan berbeda.

Pada konfigurasi node yang berbeda (antara one to one, one to many, atau many to

many), maka akan ada perbedaan penanganan koneksi pada method createOffer

dan createAnswer di kelas Peer. Oleh karena itu, kelas-kelas berikutnya harus

mengimplementasikan method pada kelas Peer. Interaksi antar kelas akan dibahas

lebih lanjut melalui collaboration diagram pada Bab IV.3.

Secara lebih detil, pada Tabel IV-1 diperlihatkan traceability dari kemampuan live

streaming yang tersedia pada Bab III.1 dengan kelas yang ada.

Tabel IV-1 Tabel Traceability Modul Live Streaming

Kapabilitas Kelas Penanggung Jawab

Video Call Initiator, Media, Peer, Main

Video Conference Initiator, Media, Peer, Main

Desktop Sharing Initiator, Peer, Main

Live Chat Initiator, Peer, Main

Page 45: LaporanTA 13510024 Nicholas Rio

32

IV.3. Collaboration Diagram pada Web Based Live Streaming Application

Ada dua kondisi pada aplikasi live streaming pada saat live streaming dilakukan.

Kondisi pertama adalah ketika pengguna menjadi inisiator dimulainya live

streaming. Ketika pengguna menjadi inisiator, pengguna harus mengirimkan

sebuah offer kepada pengguna – pengguna lain yang telah terdaftar. Sebelum offer

dibuat, sebuah session local description harus terlebih dahulu diset pada browser

pengguna. Session local description ini kemudian akan dikirimkan bersamaan

dengan offer yang dibuat.

Server kemudian akan memvalidasi offer yang diterima. Jika valid, server akan

mengirimkan offer tersebut kepada pengguna-pengguna lain yang dituju.

Pengguna-pengguna lain kemudian akan menyiapkan sebuah answer yang berisi

session local description mereka kepada pengguna yang memberikan offer.

Setelah answer diterima oleh server dan diteruskan kepada pengguna yang

memberikan offer, maka session dari answer akan disimpan sebagai session

remote description oleh pengguna yang memberikan offer. Koneksi terjalin dan

kemudian pengiriman data media dimulai.

Ketika pengguna bukan merupakan inisiator dari live streaming, session remote

description harus terlebih dahulu diisi dengan session local description dari

inisiator. Kemudian, barulah session local description dapat diset dan dikirimkan

untuk menjadi session remote description dari inisiator. Proses terbentuknya

koneksi dapat dilihat lebih lanjut pada Offer Sequence Diagram dan Answer

Sequence Diagram pada Lampiran C.

Ketika koneksi terjadi dengan konfigurasi jaringan one to one, hubungan antar

node dapat dilihat melalui Collaboration Diagram pada Gambar IV-3.

Page 46: LaporanTA 13510024 Nicholas Rio

33

Gambar IV-3 Collaboration Diagram Antar Node Pada Konfigurasi Node One to

One

Pada konfigurasi jaringan one to many, kelas Peer yang berhubungan dengan

beberapa node lain harus mempertahankan koneksi sejumlah banyaknya node

yang berhubungan dengannya. Maka, offer diberikan kepada masing-masing node

yang hendak menjalin koneksi. Pengiriman data kemudian dilakukan secara peer

to peer antar pengguna. Kolaborasi antar node dapat dilihat pada

Gambar IV-4 (di halaman 34).

Page 47: LaporanTA 13510024 Nicholas Rio

34

Gambar IV-4 Collaboration Diagram Antar Node dengan Konfigurasi Node One To Many

Page 48: LaporanTA 13510024 Nicholas Rio

35

Pada konfigurasi jaringan many to many, kelas Peer harus mempertahankan

koneksi sejumlah banyaknya node yang berhubungan dengannya. Maka, offer

diberikan kepada seluruh node yang hendak saling menjalin koneksi. Begitu pula

answer harus diterima dari seluruh node yang hendak saling menjalin koneksi.

Ketika salah satu node hendak memutuskan koneksi, maka hanya koneksi dengan

node tersebut yang terputus. Sedangkan koneksi antar node – node lainnya tetap

terjalin dengan baik.

Kolaborasi antar node dapat dilihat pada Gambar IV-5. (di halaman 36).

Page 49: LaporanTA 13510024 Nicholas Rio

36

Gambar IV-5 Collaboration Diagram Antar Node pada Konfigurasi Jaringan Many to Many

Page 50: LaporanTA 13510024 Nicholas Rio

37

IV.4. Perancangan Pengujian Modul Aplikasi Live Streaming

Pada subbab ini dijelaskan mengenai pengujian aplikasi live streaming. Pengujian

akan dilakukan dengan 2 metode, yaitu unit testing dan use case testing. Unit

testing akan dilakukan dengan menggunakan tools Karma.js dan Jasmine pada

setiap kelas yang dibuat, sedangkan use case testing dilakukan dengan cara

penggunaan dan pengamatan langsung dari modul aplikasi yang dibuat. Tools

Karma.js dan Jasmine akan dijelaskan pada Bab IV.4.1.

Selain itu, untuk menguji kegunaan modul aplikasi, akan dilakukan studi kasus

dengan membuat 3 buah aplikasi web yang menggunakan modul live streaming

yang telah dibuat. Studi kasus ini akan dibahas lebih lanjut pada Bab V.

IV.4.1. Tools Pengujian Modul Aplikasi Live Streaming

Ada dua buah tools yang digunakan dalam pengujian modul aplikasi live

streaming, yaitu Karma.js dan Jasmine.

Karma.js adalah sebuah tool yang dapat mengaktifkan berbagai browser secara

otomatis, kemudian menjalankan berbagai kode pada masing-masing browser dan

mengembalikan hasilnya kepada pengembang. Salah satu framework testing yang

dapat digunakan oleh Karma.js adalah Jasmine.

Jasmine adalah sebuah behavior driven framework yang dapat digunakan untuk

menguji aplikasi web. Untuk menggunakan Jasmine, pengembang cukup

menuliskan beberapa script testing untuk masing – masing kasus dan halaman

web yang hendak diuji.

IV.4.2. Unit Testing Aplikasi Live Streaming

Unit Testing bertujuan untuk membuktikan setiap rancangan kelas dapat berfungsi

dengan baik secara unit. Pengujian pada setiap kelas dilakukan dengan

menggunakan tools Karma.js untuk mengotomasi tes serta Jasmine untuk

penulisan script testing. Kelas – kelas yang diuji adalah : Initiator, Media,

Main, OneToOne (implementasi dari interface Peer), OneToMany (implementasi

Page 51: LaporanTA 13510024 Nicholas Rio

38

dari interface Peer), dan ManyToMany (implementasi dari interface Peer). Hasil

dari unit testing dapat dilihat pada Lampiran B.

IV.4.3. Load Test Aplikasi Live Streaming

Load test bertujuan untuk mengetahui kapabilitas maksimal dari modul aplikasi

live streaming yang dibuat. Load test yang dilakukan adalah load test pada server

module dan load test pada client module.

Pada server module, load test dilakukan untuk mengetahui berapa banyak client

yang dapat menggunakan signaling server secara bersamaan. Sedangkan pada

client module, load test dilakukan untuk mengetahui berapa banyak user yang

dapat berada dalam room yang sama.

IV.4.3.1. Server Module Load Test

Spesifikasi server yang diujicoba adalah sebagai berikut.

1. Processor : Intel 1 Core, 2.399 GHz

2. 512 MB RAM

3. 20 GB SSD

Lokasi server berada di Singapura, melalui penyedia layanan DigitalOcean.

Pengujian dilakukan dengan cara melakukan spawn proses yang meminta request

kepada signaling server. Setelah 1000 koneksi, server mengalami crash karena

memory usage yang terlalu besar.

IV.4.3.2. Client Module Load Test

Spesifikasi client yang diujicoba adalah sebagai berikut.

1. Processor : Intel i3 – 380M, 1.33 GHz

2. 4 GB RAM

3. 320 GB Harddisk

Page 52: LaporanTA 13510024 Nicholas Rio

39

Pengujian dilakukan dengan cara melakukan koneksi dengan sebanyak mungkin

pengguna pada room yang sama. Pada saat pengujian, lag mulai terasa ketika ada

8 pengguna pada room yang sama. Hasil observasi menunjukkan bahwa untuk

setiap peer connection yang terbentuk, memory usage dari browser bertambah

sebanyak 4 MB. Tidak terjadi crash pada browser, namun lag yang terjadi setelah

8 pengguna berada pada room yang sama mengakibatkan aplikasi tidak dapat

digunakan dengan baik.

Page 53: LaporanTA 13510024 Nicholas Rio

40

BAB V.

STUDI KASUS

Pada bab ini dijelaskan mengenai studi kasus yang dilakukan dengan

menggunakan modul live streaming. Studi kasus dilakukan pada tiga buah

aplikasi web dengan konfigurasi node yang berbeda. Setiap studi kasus dirancang

untuk menguji kegunaan aplikasi yang telah dicantumkan pada Bab III.1.1, juga

untuk menguji perilaku modul yang telah dibuat pada berbagai jenis konfigurasi

node. Pada akhir setiap studi kasus, dibuat kesimpulan mengenai hasil studi kasus.

Pada akhir bab ini dibuat kesimpulan umum mengenai kebergunaan modul live

streaming.

V.1. Studi Kasus Pembuatan Aplikasi Web untuk One to One Chat

Studi kasus pertama dilakukan dengan membuat sebuah aplikasi web untuk

melakukan chatting antara 2 pengguna. Pada aplikasi web yang dibuat, pengguna

pertama-tama harus membuat sebuah room, kemudian menunggu pengguna lain

untuk memasuki room dan kemudian mulai melakukan video dan textual chatting.

Tujuan dari studi kasus ini adalah untuk menguji penggunaan modul live

streaming dalam mengambil data media dari pengguna, melakukan koneksi

dengan satu pengguna saja (konfigurasi one to one), serta mengirimkan dan

menampilkan data.

V.1.1. Kebutuhan Fungsional

Kebutuhan fungsional dari aplikasi One to One Chat dapat dilihat pada Tabel V-1.

Tabel V-1 Tabel Kebutuhan Fungsional Aplikasi One to One Chat

ID

Requirement

Deskripsi Requirement

FR-01 Aplikasi dapat menerima permintaan inisialisasi koneksi

FR-02 Aplikasi dapat memvalidasi permintaan inisialisasi koneksi

dan meneruskannya kepada user lain yang dituju

FR-03 Aplikasi dapat mengirimkan data media kepada user lain

dengan benar

FR-04 Aplikasi dapat menutup koneksi antar user

Page 54: LaporanTA 13510024 Nicholas Rio

41

ID

Requirement

Deskripsi Requirement

FR-05 Aplikasi dapat memberikan peringatan penutupan koneksi

kepada user lain yang ada di room yang sama

V.1.2. Rancangan Aplikasi

Diagram kelas dari aplikasi One to One Chat dapat dilihat pada Gambar V-1 :

Gambar V-1 Diagram Kelas Aplikasi One to One Chat

Penggunaan modul aplikasi live streaming pada pengembangan aplikasi ini

dilakukan dengan beberapa langkah berikut :

1. Pada sisi server, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

var Server = require('Server');

2. Memulai signaling server dengan kode sebagai berikut :

Server.start(8080); //8080 is the socket port

3. Pada sisi client, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

<script type="text/Javascript" src="main.js"></script>

var Main = require('Main');

var ls = new Main();

4. Mengatur domain server live streaming dengan kode sebagai berikut :

ls.setServer('http://live.nicholasrio.com:1128');

5. Membuka sebuah ruangan baru dengan kode sebagai berikut :

Page 55: LaporanTA 13510024 Nicholas Rio

42

ls.createRoom('example');

6. Bergabung ke dalam sebuah ruangan yang telah ada dengan kode sebagai

berikut :

ls.joinRoom('example');

7. Menutup koneksi dengan kode sebagai berikut :

ls.closeConnection('example');

V.1.3. Skenario Pengujian

Pengujian aplikasi One to One Chat dilakukan dengan dua buah skenario.

Skenario pertama adalah skenario normal ketika tidak ada gangguan pada koneksi

internet, sedangkan skenario kedua adalah skenario alternatif ketika terjadi

gangguan koneksi pada salah satu pengguna.

Skenario normal dan hasil pengujiannya dapat dilihat pada Tabel V-2.

Tabel V-2 Skenario Normal Aplikasi One to One Chat

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Pengguna pertama

mengakses aplikasi

dengan browser

Google Chrome 35.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Pengguna kedua

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Pengguna pertama

membuat room

dengan nama

“Example”.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

4 Pengguna kedua

memasuki room

“Example”.

Pengguna kedua masuk

ke dalam room

Example dan

menginisialisasi

koneksi dengan

pengguna pertama.

Koneksi peer to peer

antar pengguna terjalin.

Pengguna kedua masuk

ke dalam room Example

dan menginisialisasi

koneksi dengan

pengguna pertama.

Koneksi peer to peer

antar pengguna terjalin.

Page 56: LaporanTA 13510024 Nicholas Rio

43

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

5 Pengguna pertama

dan kedua saling

berkomunikasi.

Pengguna pertama dan

kedua dapat saling

melihat data media

lawan bicaranya.

Pengguna pertama dan

kedua dapat saling

melihat data media

lawan bicaranya.

6 Pengguna pertama

menutup room

“Example”.

Room Example

tertutup, baik pada

pengguna pertama

maupun pada pengguna

kedua.

Room Example tertutup,

baik pada pengguna

pertama maupun pada

pengguna kedua.

Skenario alternatif dan hasil pengujiannya ketika terjadi gangguan koneksi dapat

dilihat pada Tabel V-3.

Tabel V-3 Skenario Alternatif Aplikasi One to One Chat

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Pengguna pertama

mengakses aplikasi

dengan browser

Google Chrome 35.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Pengguna kedua

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Pengguna pertama

membuat room

dengan nama

“Example”.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

4 Pengguna kedua

memasuki room

“Example”.

Pengguna kedua masuk

ke dalam room

Example dan

menginisialisasi

koneksi dengan

pengguna pertama.

Koneksi peer to peer

antar pengguna terjalin.

Pengguna kedua masuk

ke dalam room Example

dan menginisialisasi

koneksi dengan

pengguna pertama.

Koneksi peer to peer

antar pengguna terjalin.

5 Pengguna pertama

dan kedua saling

berkomunikasi.

Pengguna pertama dan

kedua dapat saling

melihat data media

lawan bicaranya.

Pengguna pertama dan

kedua dapat saling

melihat data media

lawan bicaranya.

6 Internet pengguna Pengguna pertama Pengguna pertama tidak

Page 57: LaporanTA 13510024 Nicholas Rio

44

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

kedua dimatikan. tidak dapat melihat data

media pengguna kedua.

dapat melihat data

media pengguna kedua.

7 Internet pengguna

kedua menyala.

Terjadi rekoneksi

antara pengguna

pertama dan kedua.

Kedua pengguna

kemudian dapat

melihat data media

lawan bicaranya.

Terjadi rekoneksi antara

pengguna pertama dan

kedua. Kedua pengguna

kemudian dapat melihat

data media lawan

bicaranya.

8 Pengguna pertama

menutup room

“Example”.

Room Example

tertutup, baik pada

pengguna pertama

maupun pada pengguna

kedua.

Room Example tertutup,

baik pada pengguna

pertama maupun pada

pengguna kedua.

Page 58: LaporanTA 13510024 Nicholas Rio

45

V.1.4. Hasil Benchmark

Besar data video yang diterima oleh pengguna pertama setiap detiknya dapat

dilihat pada Gambar V-2. Terlihat adanya peningkatan bitrate video hingga

menjadi stabil sekitar detik 34. Ini terjadi karena dibutuhkan waktu untuk

perlahan–lahan meningkatkan kualitas koneksi peer to peer antar node.

Gambar V-2 Bitrate Video Pengguna Pertama

Framerate adalah jumlah frame pada satu detik. Framerate video pada pengguna

pertama setiap detiknya dapat dilihat pada Gambar V-3. Dari hasil benchmark,

terlihat bahwa framerate cukup stabil berkisar antara 16 – 19 fps. Terjadi lonjakan

tajam pada detik pertama karena koneksi baru mulai terjalin pada detik pertama.

Page 59: LaporanTA 13510024 Nicholas Rio

46

Gambar V-3 Framerate Video Pengguna Pertama

Besar data audio yang diterima oleh pengguna pertama setiap detiknya dapat

dilihat pada Gambar V-4. Fluktuasi dari data audio yang diterima akibat input

audio yang berbeda seiring dengan waktu. Terjadi peningkatan tajam pada detik

pertama karena koneksi baru terjalin pada detik pertama.

Gambar V-4 Bitrate Audio Pengguna Pertama

Besar data video yang diterima oleh pengguna kedua setiap detiknya dapat dilihat

pada Gambar V-5. Terlihat adanya peningkatan bitrate video hingga menjadi

Page 60: LaporanTA 13510024 Nicholas Rio

47

stabil sekitar detik 34. Ini terjadi karena dibutuhkan waktu untuk perlahan – lahan

meningkatkan kualitas koneksi peer to peer antar node.

Gambar V-5 Bitrate Video Pengguna Kedua

Framerate adalah jumlah frame pada satu detik. Framerate video pada pengguna

kedua setiap detiknya dapat dilihat pada Gambar V-6. Framerate video cukup

stabil pada kisaran 16 – 20 fps. Terjadi lonjakan tajam pada detik pertama karena

koneksi baru mulai terjalin pada detik pertama.

Gambar V-6 Framerate Video Pengguna Kedua

Page 61: LaporanTA 13510024 Nicholas Rio

48

Besar data audio yang diterima oleh pengguna kedua setiap detiknya dapat dilihat

pada Gambar V-7. Fluktuasi dari data audio yang diterima akibat input audio yang

berbeda seiring dengan waktu. Terjadi peningkatan tajam pada detik pertama

karena koneksi baru terjalin pada detik pertama.

Gambar V-7 Bitrate Audio Pengguna Kedua

V.1.5. Kesimpulan Studi Kasus

Studi kasus ini menunjukkan bahwa :

1. Modul live streaming dapat digunakan untuk mengimplementasikan

sebuah aplikasi web One to One Chat.

2. Studi kasus menunjukkan bahwa modul live streaming dapat mengambil

data media, melakukan koneksi dengan satu pengguna, mengirimkan data

media kepada pengguna dan menampilkan data media.

V.2. Studi Kasus Pembuatan Web Application untuk Online Class

Studi kasus kedua dilakukan dengan membuat sebuah aplikasi web Online Class.

Pada aplikasi web yang dibuat, pengguna pertama-tama harus melakukan

registrasi sebagai user. Pengguna dapat kemudian memulai sebuah pelajaran

secara online, atau mengikuti sebuah pelajaran yang sedang berlangsung.

Pengguna yang mengikuti sebuah pelajaran akan melihat pengajar melalui

Page 62: LaporanTA 13510024 Nicholas Rio

49

streaming media dan dapat berinteraksi langsung dengan pengajar dan pengguna

lain yang berada di dalam pelajaran itu. Namun, pengguna yang mengikuti

pelajaran tersebut tidak akan mengirimkan data medianya kepada pengajar dan

pengguna lainnya. Tujuan dari studi kasus ini adalah untuk menguji penggunaan

modul live streaming ketika salah satu pengguna (pengajar) harus

mempertahankan koneksi dengan banyak pengguna lainnya (konfigurasi node one

to many).

V.2.1. Kebutuhan Fungsional

Kebutuhan fungsional dari aplikasi Online Class dapat dilihat pada Tabel V-4.

Tabel V-4 Kebutuhan Fungsional Aplikasi Online Class

ID

Requirement

Deskripsi Requirement

FR-01 Aplikasi dapat menerima permintaan inisialisasi koneksi

FR-02 Aplikasi dapat memvalidasi permintaan inisialisasi koneksi

dan meneruskannya kepada user lain yang dituju

FR-03 Aplikasi dapat mempertahankan koneksi dengan banyak

pengguna

FR-04 Aplikasi dapat mengirimkan data media kepada user lain

dengan benar

FR-05 Aplikasi dapat menutup koneksi antar user

FR-06 Aplikasi dapat memberikan peringatan penutupan koneksi

kepada user lain yang ada di room yang sama

Page 63: LaporanTA 13510024 Nicholas Rio

50

V.2.2. Rancangan Aplikasi

Diagram kelas dari aplikasi Online Class dapat dilihat pada Gambar V-8.

Gambar V-8 Diagram Kelas Aplikasi Online Class

Penggunaan modul aplikasi live streaming pada pengembangan aplikasi ini

dilakukan dengan beberapa langkah berikut :

1. Pada sisi server, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

var Server = require('Server');

2. Memulai signaling server dengan kode sebagai berikut :

Server.start(8080); //8080 is the socket port

3. Pada sisi client, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

<script type="text/Javascript" src="main.js"></script>

var Main = require('Main');

var ls = new Main();

4. Mengatur domain server live streaming dengan kode sebagai berikut :

ls.setServer('http://live.nicholasrio.com:1128');

5. Khusus pada sisi pengguna yang menjadi murid, ubah konfigurasi agar

pengguna hanya menerima data media dengan kode sebagai berikut :

ls.setOfferVideo(false);

ls.setOfferAudio(false);

Page 64: LaporanTA 13510024 Nicholas Rio

51

6. Membuka sebuah ruangan baru dengan kode sebagai berikut :

ls.createRoom('example');

7. Bergabung ke dalam sebuah ruangan yang telah ada dengan kode sebagai

berikut :

ls.joinRoom('example');

8. Menutup koneksi dengan kode sebagai berikut :

ls.closeConnection('example');

V.2.3. Skenario Pengujian

Pengujian aplikasi Online Class dilakukan dengan 2 skenario. Skenario pertama

adalah ketika salah satu murid menutup koneksinya di tengah kelas. Sedangkan

skenario kedua adalah ketika Guru menutup kelas dengan sejumlah murid yang

masih terkoneksi.

Skenario pertama dan hasil pengujiannya dapat dilihat pada Tabel V-5.

Tabel V-5 Skenario Pertama Aplikasi Online Class

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Guru mengakses

aplikasi dengan

browser Google

Chrome 35.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Murid pertama

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Murid kedua

mengakses aplikasi

dengan browser

Mozilla Firefox di

komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

4 Guru membuat

kelas

“Matematika”.

Kelas Matematika

terbuka, Guru

menunggu koneksi dari

murid.

Kelas Matematika

terbuka, Guru menunggu

koneksi dari murid.

5 Murid pertama

memasuki kelas

“Matematika”.

Murid pertama masuk

ke kelas Matematika,

koneksi peer to peer

Murid pertama masuk ke

kelas Matematika,

koneksi peer to peer

Page 65: LaporanTA 13510024 Nicholas Rio

52

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

terjalin antara murid

pertama dan Guru.

terjalin antara murid

pertama dan Guru.

6 Murid kedua

memasuki kelas

“Matematika”.

Murid kedua masuk ke

kelas Matematika,

koneksi peer to peer

terjalin antara murid

kedua dan Guru.

Murid kedua masuk ke

kelas Matematika,

koneksi peer to peer

terjalin antara murid

kedua dan Guru.

7 Guru dan murid

saling

berkomunikasi.

Murid pada kelas

Matematika dapat

melihat data media dari

Guru. Sedangkan Guru

dapat melihat

pertanyaan –

pertanyaan dalam

bentuk teks dari murid

– murid di kelas

Matematika.

Murid pada kelas

Matematika dapat

melihat data media dari

Guru. Sedangkan Guru

dapat melihat pertanyaan

– pertanyaan dalam

bentuk teks dari murid –

murid di kelas

Matematika.

8 Murid pertama

menutup koneksi.

Murid pertama keluar

dari kelas Matematika.

Guru memutuskan

koneksi peer to peer

dengan murid pertama.

Guru dan murid kedua

tetap terkoneksi.

Murid pertama keluar

dari kelas Matematika.

Guru memutuskan

koneksi peer to peer

dengan murid pertama.

Guru dan murid kedua

tetap terkoneksi.

Skenario kedua dan hasil pengujiannya dapat dilihat pada Tabel V-6.

Tabel V-6 Skenario Kedua Aplikasi Online Class

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Guru mengakses

aplikasi dengan

browser Google

Chrome 35.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Murid pertama

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Murid kedua

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

Page 66: LaporanTA 13510024 Nicholas Rio

53

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

4 Guru membuat

kelas

“Matematika”.

Kelas Matematika

terbuka, Guru

menunggu koneksi dari

murid.

Kelas Matematika

terbuka, Guru menunggu

koneksi dari murid.

5 Murid pertama

memasuki kelas

“Matematika”.

Murid pertama masuk

ke kelas Matematika,

koneksi peer to peer

terjalin antara murid

pertama dan Guru.

Murid pertama masuk ke

kelas Matematika,

koneksi peer to peer

terjalin antara murid

pertama dan Guru.

6 Murid kedua

memasuki kelas

“Matematika”.

Murid kedua masuk ke

kelas Matematika,

koneksi peer to peer

terjalin antara murid

kedua dan Guru.

Murid kedua masuk ke

kelas Matematika,

koneksi peer to peer

terjalin antara murid

kedua dan Guru.

7 Guru dan murid

saling

berkomunikasi.

Murid pada kelas

Matematika dapat

melihat data media dari

Guru. Sedangkan Guru

dapat melihat

pertanyaan-pertanyaan

dalam bentuk teks dari

murid-murid di kelas

Matematika.

Murid pada kelas

Matematika dapat

melihat data media dari

Guru. Sedangkan Guru

dapat melihat

pertanyaan-pertanyaan

dalam bentuk teks dari

murid-murid di kelas

Matematika.

8 Guru menutup

kelas.

Guru memutuskan

koneksi peer to peer

dengan murid pertama

dan murid kedua.

Semua murid secara

otomatis keluar dari

kelas.

Guru memutuskan

koneksi peer to peer

dengan murid pertama

dan murid kedua. Semua

murid secara otomatis

keluar dari kelas.

V.2.4. Hasil Benchmark

Besar data video yang diterima oleh murid pertama setiap detiknya dapat dilihat

pada Gambar V-9. Bitrate video relatif stabil pada kisaran 1700000 – 2300000

bits / second.

Page 67: LaporanTA 13510024 Nicholas Rio

54

Gambar V-9 Bitrate Video Murid Pertama

Framerate adalah jumlah frame pada satu detik. Framerate data video yang

diterima oleh murid kedua setiap detiknya dapat dilihat pada Gambar V-13. Pada

awalnya framerate video berada pada kisaran 15 – 16 fps, namun setelah koneksi

membaik, framerate video meningkat menjadi 19 – 20 fps. Terjadi lonjakan tajam

pada detik pertama karena koneksi baru mulai terjalin pada detik pertama.

Gambar V-10 Framerate Video Murid Pertama

Page 68: LaporanTA 13510024 Nicholas Rio

55

Besar data audio yang diterima oleh murid pertama setiap detiknya dapat dilihat

pada Gambar V-11. Fluktuasi dari data audio yang diterima akibat input audio

yang berbeda seiring dengan waktu. Terjadi peningkatan tajam pada detik pertama

karena koneksi baru terjalin pada detik pertama.

Gambar V-11 Bitrate Audio Murid Pertama

Besar data video yang diterima oleh murid kedua setiap detiknya dapat dilihat

pada Gambar V-12. Terlihat peningkatan bitrate video hingga menjadi stabil

sekitar detik 13. Ini terjadi karena dibutuhkan waktu untuk perlahan – lahan

meningkatkan kualitas koneksi peer to peer antar node.

Page 69: LaporanTA 13510024 Nicholas Rio

56

Gambar V-12 Bitrate Video Murid Kedua

Framerate adalah jumlah frame pada satu detik. Framerate data video yang

diterima oleh murid kedua setiap detiknya dapat dilihat pada Gambar V-13. Pada

awalnya framerate video berada pada kisaran 15 – 16 fps, namun setelah koneksi

membaik, framerate video meningkat menjadi 19 – 20 fps. Terjadi lonjakan tajam

pada detik pertama karena koneksi baru mulai terjalin pada detik pertama.

Gambar V-13 Framerate Video Murid Kedua

Besar data audio yang diterima oleh murid kedua setiap detiknya dapat dilihat

pada Gambar V-14. Fluktuasi dari data audio yang diterima akibat input audio

Page 70: LaporanTA 13510024 Nicholas Rio

57

yang berbeda seiring dengan waktu. Terjadi peningkatan tajam pada detik pertama

karena koneksi baru terjalin pada detik pertama.

Gambar V-14 Bitrate Audio Murid Kedua

V.2.5. Kesimpulan Studi Kasus

Studi kasus ini menunjukkan bahwa :

1. Modul aplikasi live streaming dapat digunakan ulang untuk

mengimplementasikan sebuah aplikasi web Online Class.

2. Modul aplikasi live streaming dapat mempertahankan koneksi dengan

beberapa pengguna sekaligus.

V.3. Studi Kasus Pembuatan Web Application untuk Video Conference

Studi kasus ketiga dilakukan dengan membuat sebuah aplikasi web untuk

melakukan Video Conference. Pada aplikasi web yang dibuat, pengguna pertama-

tama harus melakukan registrasi sebagai user, kemudian membuat sebuah room

untuk mulai melakukan Video Conference. Pengguna lain kemudian dapat

memasuki room yang telah dibuat untuk melakukan Video Conference. Tujuan

dari studi kasus ini adalah untuk menguji penggunaan modul live streaming,

dalam mengambil data media dari pengguna, melakukan koneksi dengan satu atau

lebih pengguna, mengirimkan data media kepada pengguna dan menampilkan

Page 71: LaporanTA 13510024 Nicholas Rio

58

data media. Selain itu, pada studi kasus ini pengaksesan aplikasi web yang telah

dibuat dilakukan melalui berbagai platform untuk melihat apakah modul aplikasi

ini dapat berjalan pada platform yang berbeda-beda.

V.3.1. Kebutuhan Fungsional

Kebutuhan fungsional dari aplikasi Video Conference dapat dilihat pada

Tabel V-7.

Tabel V-7 Kebutuhan Fungsional Aplikasi Video Conference

ID

Requirement

Deskripsi Requirement

FR-01 Aplikasi dapat melakukan registrasi user

FR-02 Aplikasi dapat melakukan log in user

FR-03 Aplikasi dapat menerima permintaan inisialisasi koneksi

FR-04 Aplikasi dapat memvalidasi permintaan inisialisasi koneksi

dan meneruskannya kepada user lain yang dituju

FR-05 Aplikasi dapat mempertahankan koneksi dengan banyak

pengguna

FR-06 Aplikasi dapat mengirimkan data media kepada user lain

dengan benar

FR-07 Aplikasi dapat menutup koneksi antar user

FR-08 Aplikasi dapat memberikan peringatan penutupan koneksi

kepada user lain yang ada di room yang sama

V.3.2. Rancangan Aplikasi

Diagram kelas dari aplikasi Video Conference dapat dilihat pada Gambar V-15.

Gambar V-15 Diagram Kelas Aplikasi Video Conference

Page 72: LaporanTA 13510024 Nicholas Rio

59

Penggunaan modul aplikasi live streaming pada pengembangan aplikasi ini

dilakukan dengan beberapa langkah berikut :

1. Pada sisi server, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

var Server = require('Server');

2. Memulai signaling server dengan kode sebagai berikut :

Server.start(8080); //8080 is the socket port

3. Pada sisi client, sertakan modul live streaming ke dalam aplikasi dengan

kode sebagai berikut :

<script type="text/Javascript" src="main.js"></script>

var Main = require('Main');

var ls = new Main();

4. Mengatur domain server live streaming dengan kode sebagai berikut :

ls.setServer('http://live.nicholasrio.com:1128');

5. Mengatur username dengan kode sebagai berikut :

ls.setUser("nicholas");

6. Membuka sebuah ruangan baru dengan kode sebagai berikut :

ls.createRoom('example');

7. Bergabung ke dalam sebuah ruangan yang telah ada dengan kode sebagai

berikut :

ls.joinRoom('example');

8. Menutup koneksi dengan kode sebagai berikut :

ls.closeConnection('example');

V.3.3. Skenario Pengujian

Pengujian aplikasi Video Conference dilakukan dengan 2 skenario. Skenario

pertama adalah ketika semua pengguna menggunakan desktop untuk mengakses

aplikasi. Skenario kedua adalah ketika ada pengguna yang menggunakan mobile

phone dan sistem operasi yang berbeda-beda untuk mengakses aplikasi.

Skenario pertama dan hasil pengujiannya dapat dilihat pada Tabel V-8.

Page 73: LaporanTA 13510024 Nicholas Rio

60

Tabel V-8 Skenario Pertama Aplikasi Video Conference

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Pengguna pertama

mengakses

aplikasi dengan

browser Google

Chrome 35.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Pengguna kedua

mengakses

aplikasi dengan

browser Mozilla

Firefox 34 di

komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Pengguna ketiga

mengakses

aplikasi dengan

browser Mozilla

Firefox 34 di

komputer lain.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

4 Pengguna pertama

membuat room

“Example”.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

Room Example terbentuk,

pengguna pertama berada

dalam status menunggu

pengguna berikutnya.

5 Pengguna kedua

memasuki room

“Example”.

Pengguna kedua

memasuki Room

Example dan

menginisialisasi

koneksi peer to peer

dengan pengguna

pertama. Koneksi peer

to peer terbentuk antara

pengguna pertama dan

pengguna kedua.

Pengguna kedua

memasuki Room Example

dan menginisialisasi

koneksi peer to peer

dengan pengguna

pertama. Koneksi peer to

peer terbentuk antara

pengguna pertama dan

pengguna kedua.

Page 74: LaporanTA 13510024 Nicholas Rio

61

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

6 Pengguna ketiga

memasuki room

“Example”.

Pengguna ketiga

memasuki Room

Example dan

menginisialisasi

koneksi peer to peer

dengan pengguna

pertama dan kedua.

Koneksi peer to peer

terbentuk antara

pengguna ketiga dan

pertama, serta

pengguna ketiga dan

kedua.

Pengguna ketiga

memasuki Room Example

dan menginisialisasi

koneksi peer to peer

dengan pengguna pertama

dan kedua. Koneksi peer

to peer terbentuk antara

pengguna ketiga dan

pertama, serta pengguna

ketiga dan kedua.

7 Seluruh pengguna

saling

berkomunikasi.

Pengguna pertama,

kedua, dan ketiga dapat

saling melihat data

media lawan bicaranya.

Pengguna pertama, kedua,

dan ketiga dapat saling

melihat data media lawan

bicaranya.

8 Pengguna pertama

menutup room

“Example”.

Pengguna pertama

menutup koneksi peer

to peer dengan

pengguna kedua dan

ketiga. Pengguna kedua

dan ketiga menutup

koneksi peer to peer

dengan pengguna

pertama. Pengguna

pertama keluar dari

Room Example, namun

pengguna kedua dan

ketiga masih

berkomunikasi dengan

normal pada Room

Example.

Pengguna pertama

menutup koneksi peer to

peer dengan pengguna

kedua dan ketiga.

Pengguna kedua dan

ketiga menutup koneksi

peer to peer dengan

pengguna pertama.

Pengguna pertama keluar

dari Room Example,

namun pengguna kedua

dan ketiga masih

berkomunikasi dengan

normal pada Room

Example.

Page 75: LaporanTA 13510024 Nicholas Rio

62

Skenario kedua dan hasil pengujiannya dapat dilihat pada Tabel V-9.

Tabel V-9 Skenario Kedua Aplikasi Video Conference

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

1 Pengguna pertama

mengakses aplikasi

dengan browser

Google Chrome 35

dengan sistem

operasi Windows

7.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

2 Pengguna kedua

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di komputer lain

dengan sistem

operasi Ubuntu.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

3 Pengguna ketiga

mengakses aplikasi

dengan browser

Mozilla Firefox 34

di ponsel Samsung

Galaxy Note 2.

Aplikasi dapat diakses

pada browser

Aplikasi dapat diakses

pada browser

4 Pengguna pertama

membuat room

“Example”.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

Room Example

terbentuk, pengguna

pertama berada dalam

status menunggu

pengguna berikutnya.

5 Pengguna kedua

memasuki room

“Example”.

Pengguna kedua

memasuki Room

Example dan

menginisialisasi

koneksi peer to peer

dengan pengguna

pertama. Koneksi peer

to peer terbentuk antara

pengguna pertama dan

pengguna kedua.

Pengguna kedua

memasuki Room

Example dan

menginisialisasi koneksi

peer to peer dengan

pengguna pertama.

Koneksi peer to peer

terbentuk antara

pengguna pertama dan

pengguna kedua.

Page 76: LaporanTA 13510024 Nicholas Rio

63

No Langkah Hasil yang

diharapkan

Hasil yang dicapai

6 Pengguna ketiga

memasuki room

“Example”.

Pengguna ketiga

memasuki Room

Example dan

menginisialisasi

koneksi peer to peer

dengan pengguna

pertama dan kedua.

Koneksi peer to peer

terbentuk antara

pengguna ketiga dan

pertama, serta

pengguna ketiga dan

kedua.

Pengguna ketiga

memasuki Room

Example dan

menginisialisasi koneksi

peer to peer dengan

pengguna pertama dan

kedua. Koneksi peer to

peer terbentuk antara

pengguna ketiga dan

pertama, serta pengguna

ketiga dan kedua.

7 Seluruh pengguna

saling

berkomunikasi.

Pengguna pertama,

kedua, dan ketiga dapat

saling melihat data

media lawan bicaranya.

Pengguna pertama,

kedua, dan ketiga dapat

saling melihat data media

lawan bicaranya.

8 Pengguna pertama

menutup room

“Example”.

Pengguna pertama

menutup koneksi peer

to peer dengan

pengguna kedua dan

ketiga. Pengguna kedua

dan ketiga menutup

koneksi peer to peer

dengan pengguna

pertama. Pengguna

pertama keluar dari

Room Example, namun

pengguna kedua dan

ketiga masih

berkomunikasi dengan

normal pada Room

Example.

Pengguna pertama

menutup koneksi peer to

peer dengan pengguna

kedua dan ketiga.

Pengguna kedua dan

ketiga menutup koneksi

peer to peer dengan

pengguna pertama.

Pengguna pertama keluar

dari Room Example,

namun pengguna kedua

dan ketiga masih

berkomunikasi dengan

normal pada Room

Example.

V.3.4. Hasil Benchmark

Besar data video yang diterima oleh pengguna pertama dari pengguna kedua

setiap detiknya dapat dilihat pada Gambar V-16. Terlihat adanya peningkatan

bitrate video hingga menjadi stabil sekitar detik ke 28. Ini terjadi karena

dibutuhkan waktu untuk perlahan – lahan meningkatkan kualitas koneksi peer to

peer antar node.

Page 77: LaporanTA 13510024 Nicholas Rio

64

Gambar V-16 Bitrate Video Pengguna Pertama dari Pengguna Kedua

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna pertama dari pengguna kedua setiap detiknya dapat dilihat pada

Gambar V-17. Framerate video terlihat cukup berfluktuasi sesuai dengan kondisi

jaringan, beriksar antara 16 – 25 fps. Terjadi lonjakan tajam pada detik pertama

karena koneksi baru mulai terjalin pada detik pertama.

Gambar V-17 Framerate Video Pengguna Pertama dari Pengguna Kedua

Besar data audio yang diterima oleh pengguna pertama dari pengguna kedua

setiap detiknya dapat dilihat pada Gambar V-18. Fluktuasi dari data audio yang

Page 78: LaporanTA 13510024 Nicholas Rio

65

diterima akibat input audio yang berbeda seiring dengan waktu. Terjadi

peningkatan tajam pada detik pertama karena koneksi baru terjalin pada detik

pertama.

Gambar V-18 Bitrate Audio Pengguna Pertama dari Pengguna Kedua

Besar data video yang diterima oleh pengguna pertama dari pengguna ketiga

setiap detiknya dapat dilihat pada Gambar V-19. Terlihat peningkatan bitrate

video hingga menjadi stabil sekitar detik ke 22. Ini terjadi karena dibutuhkan

waktu untuk perlahan – lahan meningkatkan kualitas koneksi peer to peer antar

node.

Gambar V-19 Bitrate Video Pengguna Pertama dari Pengguna Ketiga

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna pertama dari pengguna ketiga setiap detiknya dapat dilihat pada

Page 79: LaporanTA 13510024 Nicholas Rio

66

Gambar V-20. Framerate yang rendah disebabkan oleh keterbatasan piranti

kamera pada pengguna ketiga yang hanya dapat menghasilkan framerate

maksimum 10 fps. Terjadi lonjakan tajam pada detik pertama karena koneksi baru

mulai terjalin pada detik pertama.

Gambar V-20 Framerate Video Pengguna Pertama dari Pengguna Ketiga

Besar data audio yang diterima oleh pengguna pertama dari pengguna ketiga

setiap detiknya dapat dilihat pada Gambar V-21. Fluktuasi dari data audio yang

diterima akibat input audio yang berbeda seiring dengan waktu. Terjadi

peningkatan tajam pada detik pertama karena koneksi baru terjalin pada detik

pertama.

Page 80: LaporanTA 13510024 Nicholas Rio

67

Gambar V-21 Bitrate Audio Pengguna Pertama dari Pengguna Ketiga

Besar data video yang diterima oleh pengguna kedua dari pengguna pertama

setiap detiknya dapat dilihat pada Gambar V-22. Terlihat peningkatan pada bitrate

video hingga menjadi stabil sekitar detik ke-28. Ini terjadi karena dibutuhkan

waktu untuk perlahan – lahan meningkatkan kualitas koneksi peer to peer antar

node.

Gambar V-22 Bitrate Video Pengguna Kedua dari Pengguna Pertama

Page 81: LaporanTA 13510024 Nicholas Rio

68

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna kedua dari pengguna pertama setiap detiknya dapat dilihat pada

Gambar V-23. Framerate video berfluktuasi sesuai dengan kondisi jaringan, di

antara 16 – 25 fps. Terjadi lonjakan tajam pada detik pertama karena koneksi baru

mulai terjalin pada detik pertama.

Gambar V-23 Framerate Video Pengguna Kedua dari Pengguna Pertama

Besar data audio yang diterima oleh pengguna kedua dari pengguna pertama

setiap detiknya dapat dilihat pada Gambar V-24. Fluktuasi dari data audio yang

diterima akibat input audio yang berbeda seiring dengan waktu. Terjadi

peningkatan tajam pada detik pertama karena koneksi baru terjalin pada detik

pertama.

Page 82: LaporanTA 13510024 Nicholas Rio

69

Gambar V-24 Bitrate Audio Pengguna Kedua dari Pengguna Pertama

Besar data video yang diterima oleh pengguna kedua dari pengguna ketiga setiap

detiknya dapat dilihat pada Gambar V-25. Terlihat peningkatan bitrate video

hingga menjadi stabil sekitar detik ke-16 yang terjadi karena dibutuhkan waktu

untuk perlahan-lahan meningkatkan kualitas koneksi peer to peer antar node.

Gambar V-25 Bitrate Video Pengguna Kedua dari Pengguna Ketiga

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna kedua dari pengguna ketiga setiap detiknya dapat dilihat pada

Page 83: LaporanTA 13510024 Nicholas Rio

70

Gambar V-26. Framerate video yang rendah disebabkan oleh keterbatasan piranti

kamera pada pengguna ketiga yang hanya dapat menghasilkan framerate

maksimum 10 fps. Terjadi lonjakan tajam pada detik pertama karena koneksi baru

mulai terjalin pada detik pertama.

Gambar V-26 Framerate Video Pengguna Kedua dari Pengguna Ketiga

Besar data audio yang diterima oleh pengguna kedua dari pengguna ketiga setiap

detiknya dapat dilihat pada Gambar V-27. Fluktuasi dari data audio yang diterima

akibat input audio yang berbeda seiring dengan waktu. Terjadi peningkatan tajam

pada detik pertama karena koneksi baru terjalin pada detik pertama.

Gambar V-27 Bitrate Audio Pengguna Kedua dari Pengguna Ketiga

Page 84: LaporanTA 13510024 Nicholas Rio

71

Besar data video yang diterima oleh pengguna ketiga dari pengguna pertama

setiap detiknya dapat dilihat pada Gambar V-28. Peningkatan bitrate video baru

mulai terjadi pada detik 19. Ini terjadi karena dibutuhkan waktu untuk perlahan –

lahan meningkatkan kualitas koneksi peer to peer antar node.

Gambar V-28 Bitrate Video Pengguna Ketiga dari Pengguna Pertama

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna ketiga dari pengguna pertama setiap detiknya dapat dilihat pada

Gambar V-29. Framerate video berfluktuasi sesuai dengan kondisi jaringan di

kisaran 6 – 25 fps. Terjadi lonjakan tajam pada detik pertama karena koneksi baru

mulai terjalin pada detik pertama.

Gambar V-29 Framerate Video Pengguna Ketiga dari Pengguna Pertama

Page 85: LaporanTA 13510024 Nicholas Rio

72

Besar data audio yang diterima oleh pengguna ketiga dari pengguna pertama

setiap detiknya dapat dilihat pada Gambar V-30. Fluktuasi dari data audio yang

diterima akibat input audio yang berbeda seiring dengan waktu. Terjadi

peningkatan tajam pada detik pertama karena koneksi baru terjalin pada detik

pertama.

Gambar V-30 Bitrate Audio Pengguna Ketiga dari Pengguna Pertama

Besar data video yang diterima oleh pengguna ketiga dari pengguna kedua setiap

detiknya dapat dilihat pada Gambar V-31. Peningkatan bitrate video baru mulai

terjadi pada detik ke-19, sebelum menjadi stabil sekitar detik ke-58. Ini terjadi

karena dibutuhkan waktu untuk perlahan – lahan meningkatkan kualitas koneksi

peer to peer antar node.

Page 86: LaporanTA 13510024 Nicholas Rio

73

Gambar V-31 Bitrate Video Pengguna Ketiga dari Pengguna Kedua

Framerate adalah jumlah frame pada satu detik. Framerate video yang diterima

oleh pengguna ketiga dari pengguna kedua setiap detiknya dapat dilihat pada

Gambar V-32. Framerate video berfluktuasi sesuai dengan kondisi jaringan pada

kisaran 9 – 25 fps. Terjadi lonjakan tajam pada detik pertama karena koneksi baru

mulai terjalin pada detik pertama.

Gambar V-32 Framerate Video Pengguna Ketiga dari Pengguna Kedua

Page 87: LaporanTA 13510024 Nicholas Rio

74

Besar data audio yang diterima oleh pengguna ketiga dari pengguna kedua setiap

detiknya dapat dilihat pada Gambar V-33. Fluktuasi dari data audio yang diterima

akibat input audio yang berbeda seiring dengan waktu. Terjadi peningkatan tajam

pada detik pertama karena koneksi baru terjalin pada detik pertama.

Gambar V-33 Bitrate Audio Pengguna Ketiga dari Pengguna Kedua

V.3.5. Kesimpulan Studi Kasus

Studi kasus ini menunjukkan bahwa :

1. Modul live streaming dapat digunakan untuk mengimplementasikan

sebuah aplikasi web Video Conference.

2. Studi kasus menunjukkan bahwa modul live streaming dapat mengambil

data media, melakukan koneksi dengan satu atau lebih pengguna,

mengirimkan data media kepada pengguna dan menampilkan data media.

3. Modul live streaming dapat berjalan pada platform Windows, Ubuntu dan

Android yang digunakan untuk mengakses aplikasi web yang dibuat.

4. Performa modul live streaming dapat dipengaruhi juga oleh kualitas

perangkat keras yang kurang baik, ditunjukkan oleh rendahnya framerate

video yang dikirimkan oleh pengguna ketiga.

Page 88: LaporanTA 13510024 Nicholas Rio

75

V.4. Kesimpulan Studi Kasus Keseluruhan

Beberapa kesimpulan yang dapat ditarik dari studi kasus yang telah dilakukan :

1. Modul aplikasi live streaming dapat digunakan pada pengembangan

berbagai aplikasi web.

2. Modul aplikasi live streaming dapat mengambil data media, melakukan

koneksi dengan satu atau lebih pengguna, mengirimkan data media dan

menampilkan data media.

3. Modul aplikasi live streaming berjalan dengan baik pada berbagai

platform yang diuji.

4. Modul aplikasi live streaming dapat mempertahankan koneksi dengan satu

atau lebih pengguna.

Page 89: LaporanTA 13510024 Nicholas Rio

76

BAB VI.

KESIMPULAN DAN SARAN

Pada bab ini akan dijelaskan mengenai kesimpulan dari pengerjaan Tugas Akhir

dan saran untuk pengembangan lebih lanjut terhadap modul aplikasi live

streaming yang telah dipaparkan.

VI.1. Kesimpulan

Kesimpulan yang didapat dari pengembangan Tugas Akhir ini adalah :

1. Modul aplikasi live streaming dapat dibuat dengan menggunakan

teknologi HTML5, yaitu WebSocket dan WebRTC.

2. Modul aplikasi live streaming yang dibuat bersifat reusable. Hal ini sudah

dibuktikan dengan penggunaan modul tersebut pada 3 studi kasus yang

dilakukan. Pada 3 studi kasus yang telah dilakukan, modul aplikasi yang

dibuat sudah dapat digunakan tanpa banyak perubahan.

3. Modul aplikasi live streaming yang dibuat bersifat reliable. Hal ini dapat

disimpulkan dari simulasi putusnya jaringan pada studi kasus pertama,

serta dari hasil benchmark pada seluruh studi kasus yang telah dilakukan.

4. Masih terjadi performa yang kurang baik pada modul aplikasi ini, yang

disebabkan antara lain oleh kualitas perangkat keras yang kurang baik.

VI.2. Saran

Saran untuk pengembangan selanjutnya terhadap Tugas Akhir ini adalah :

1. Modul aplikasi live streaming mungkin juga dilakukan dengan membuat

sebuah extention pada browser. Metode ini dapat diteliti lebih lanjut pada

penelitian berikutnya.

2. Ada metode – metode lain yang dapat digunakan dalam mengirimkan data,

antara lain dengan menggunakan HTTP Polling. Metode ini dapat diteliti

lebih lanjut pada penelitian berikutnya.

Page 90: LaporanTA 13510024 Nicholas Rio

77

3. Signaling server pada Tugas Akhir ini dapat pula dibuat dengan

menggunakan Session Initiation Protocol (SIP). Pembuatan signaling

server dengan menggunakan SIP beserta kelebihan – kelebihannya dapat

diteliti lebih lanjut pada penelitian berikutnya.

Page 91: LaporanTA 13510024 Nicholas Rio

78

DAFTAR REFERENSI

[1] Diambil pada tanggal 25 Oktober 2013, pukul 15.00 sore :

https://support.Skype.com/en/faq/FA12309/what-are-the-minimum-requirements-

for-running-Skype-for-android

[2] Jana, S., Amit Pande, Jack Chan dan Prasant Mohaputra. 2013. Mobile Video

Chat : Issues and Challenges.

[3] Johnston, Alan B., Daniel C. Burnett. 2013. APIs and RTCWeb Protocols of

the HTML5 Real-Time Web, 2nd

edition.

[4] Wang, Vanessa, Frank Salim, dan Peter Moskovits. 2013. The Definitive

Guide to HTML5 WebSocket.

[5] Diambil pada tanggal 15 November 2013, pukul 01.24 pagi :

http://www.w3schools.com/browsers/browsers_stats.asp

[6] Simpson, Wes. 2008. Video Over IP: IPTV, Internet Video, H.264, P2P, Web

TV, and Streaming: A Complete Guide to Understanding the Technology.

[7] Meyer, Benhard. 1997. Object-Oriented Software Construction, 2nd

edition.

[8] Diambil pada tanggal 13 Januari 2014, pukul 12.39 siang :

http://www.memoireonline.com/05/08/1075/m_ip-packet-charging-multimedia-

services8.html.

[9] Diambil pada tanggal 1 Maret 2014, pukul 9.36 pagi :

http://www.codeproject.com/Articles/614028/Peer-to-Peer-File-Sharing-Through-

WCF.

[10] Diambil pada tanggal 1 Maret 2014, pukul 9.40 pagi :

http://pt.wikipedia.org/wiki/Ficheiro:Server-based-network.svg

[11] Diambil pada tanggal 1 Maret 2014, pukul 9.48 pagi :

https://www.WebSocket.org/quantum.html

[12] van Kesteren, Anna. 2011. HTML5 differences from HTML4.

Page 92: LaporanTA 13510024 Nicholas Rio

79

Lampiran A. MediaStream Processing API

Stream Processing API and Description Tipe

MediaStream

Represents a collection of MediaStreamTrack, currently

only audio and video.

Interface

new MediaStream(MediaStream or

MediaStreamTrackSequence)

Captures a new MediaStream consisting of tracks of

audio and video from other MediaStream objects. The

input parameter is either a single MediaStream or a

MediaStreamTrackSequence, which is an array of

MediaStreamTrack.

Constructor

MediaStream.id

A unique, browser generated identifier string for this

MediaStream defined in the “Media Capture and

Streams” document. The “Web RTC 1.0” document

explains how the remote-originated stream labels are

created.

Attribute

MediaStream.getAudioTracks()

Returns an array of all the AudioMediaStreamTrack in

this MediaStream.

Method

MediaStream.getVideoTracks()

Returns an array of all the VideoMediaStreamTrack in

this MediaStream.

Method

MediaStream.clone()

Returns a clone of the MediaStream that has a different

id and clones of all tracks in the MediaStream.

Method

MediaStream.ended

Set by the browser, this attribute has the value true if and

if only the stream has finished.

Attribute

Page 93: LaporanTA 13510024 Nicholas Rio

80

MediaStream.onended

Application-settable to a function or method that will be

called when MediaStream finishes.

Attribute

Stream Processing API and Description Tipe

NavigatorUserMedia

Pre-existing interface in all web browsers.

Interface

NavigatorUserMedia.getUserMedia()

Returns a MediaStream containing one or more media

tracks that satisfy the constraints (see

MediaStreamConstraints) given as input.

Method

NavigatorUserMediaSuccessCallback

Application-settable to a function/method that accepts a

MediaStream as a parameter. Used by

NavigatorUserMedia.getUserMedia().

Callback

Page 94: LaporanTA 13510024 Nicholas Rio

81

Lampiran B. Hasil Unit Testing

Nama Kelas Hasil

Initiator 100% passed.

Media 100% passed.

Main 100% passed.

OneToOne (implements Peer) 100% passed.

OneToMany (implements Peer) 100% passed.

ManyToMany (implements Peer) 100% passed.

Page 95: LaporanTA 13510024 Nicholas Rio

82

Lampiran C. Sequence Diagram

Gambar C-1. Offer Sequence Diagram

Page 96: LaporanTA 13510024 Nicholas Rio

83

Gambar C-2. Answer Sequence Diagram