Implementasi Bidirectional HTTP pada aplikasi chat berbasis web menggunakan protokol bayeux.

IMPLEMENTASI BIDIRECTIONAL HTTP
PADA APLIKASI CHAT BERBASIS WEB MENGGUNAKAN
PROTOKOL BAYEUX

FITRA ADITYA PRADANA

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2014

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Implementasi
Bidirectional HTTP pada Aplikasi Chat Berbasis Web Menggunakan Protokol
Bayeux adalah benar karya saya dengan arahan dari komisi pembimbing dan
belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber
informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak
diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam
Daftar Pustaka di bagian akhir skripsi ini.

Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut
Pertanian Bogor.
Bogor, Agustus 2014
Fitra Aditya Pradana
NIM G64080013

ABSTRAK
FITRA ADITYA PRADANA. Implementasi Bidirectional HTTP pada
Aplikasi Chat Berbasis Web Menggunakan Protokol Bayeux. Dibimbing oleh SRI
WAHJUNI.
Teknologi web awalnya diciptakan berdasarkan prinsip REST
(representational state transfer) dimana interaksi antara client dan server terjadi
secara synchronous melalui mekanisme request dan response. Namun dalam
perkembangannya, protokol HTTP yang menjadi jalur komunikasi web
memungkinkan interaksi antara client dan server terjadi secara bidirectional dan
asynchronous. Hal ini dikarenakan adanya mekanisme server push. Salah satu
protokol yang mengimplementasikan server push adalah protokol bayeux.
Protokol bayeux memiliki beberapa keunggulan dibandingkan dengan protokol
lainnya, di antaranya low latency dan dapat bekerja dengan baik pada client yang
berada di balik proxy. Protokol bayeux dapat dimanfaatkan ke dalam aplikasi

berbasis web yang membutuhkan komunikasi real time, salah satunya adalah
aplikasi chat. Dalam penelitian ini bidirectional HTTP diimplementasikan ke
dalam aplikasi chat sederhana berbasis web menggunakan protokol bayeux
dengan menyediakan fitur group chat dan private chat.
Kata kunci: REST, bidirectional HTTP, protokol bayeux, aplikasi chat

ABSTRACT
FITRA ADITYA PRADANA. Bidirectional HTTP Implementation on WebBased Chat Application using Bayeux Protocol. Supervised by SRI WAHJUNI.
Web technology was originally created based on REST (representational
state transfer) principles, where the interaction between client and server occurs
through a synchronous request and response mechanism. However, the
development of web technology cause interaction between client and server can
occurs bidirectionally and asynchronously. This is enabled by server push
mechanism. Bayeux protocol is an example of server push implementation. The
main advantages of bayeux are its low latency and works well behind proxy.
Bayeux can be implemented into serveral web based application that requires real
time communication, such as chat application. The objective of this research is
how to implement bidirectional HTTP into web based chat application using
bayeux protocol by providing group chat and private chat function.
Keywords: REST, bidirectional HTTP, bayeux protocol, chat application


IMPLEMENTASI BIDIRECTIONAL HTTP
PADA APLIKASI CHAT BERBASIS WEB MENGGUNAKAN
PROTOKOL BAYEUX

FITRA ADITYA PRADANA

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2014

Penguji:

1 Dr Eng Heru Sucoko, SSi, MT
2 Endang Purnama Giri, SKom, MKom

Judul Skripsi : Implementasi Bidirectional HTTP pada Aplikasi Chat Berbasis
Web Menggunakan Protokol Bayeux
Nama
: Fitra Aditya Pradana
NIM
: G64080013

Disetujui oleh

Dr Ir Sri Wahjuni, MT
Pembimbing

Diketahui oleh

Dr Ir Agus Buwono, MSi, MKom
Ketua Departemen


Tanggal Lulus:

PRAKATA
Alhamdulillah, puji dan syukur penulis ucapkan kepada Allah subhanallahu
wa ta’ala, atas segala rahmat dan karunia-Nya sehingga penelitian yang berjudul
Implementasi Bidirectional HTTP pada Aplikasi Chat Berbasis Web
Menggunakan Protokol Bayeux ini berhasil diselesaikan.
Terima kasih penulis ucapkan kepada seluruh pihak yang telah mambantu
dan terlibat dalam proses penyelesaian penelitian ini, di antaranya Ibu Dr Ir Sri
Wahjuni, MT selaku dosen pembimbing, juga kepada Bapak Endang Purnama
Giri, SKom, MKom dan Bapak Dr Eng Heru Sukoco, SSi, MT selaku dosen
penguji. Ucapan terima kasih juga penulis haturkan kepada keluarga besar di
Pamekasan, Ayah Arief Syuhada, Mama Ribut Yuliarti, Bude Evi Rufaida, dan
seluruh saudara di sana. Tak lupa pula kepada Annisa Anastasia, istri tercinta
yang selalu menemani dan mengingatkan untuk segera menyelesaikan penelitian
ini, juga bidadari kecilku yang kini bersiap untuk hadir di dunia. Terima kasih
juga kepada seluruh rekan-rekan Ilkom 45, GASISMA, KPLI Bogor, Tim
Pengembang BlankOn, serta seluruh pihak-pihak yang tidak bisa disebutkan satupersatu.
Akhir kata, penulis berharap penelitian ini tidak hanya berhenti sampai di
sini, tetapi terus dikembangkan sehingga dapat memberikan manfaat bagi

masyarakat.

Bogor, Agustus 2014
Fitra Aditya Pradana

DAFTAR ISI
DAFTAR TABEL

viii

DAFTAR GAMBAR

viii

PENDAHULUAN

1

Latar Belakang


1

Tujuan Penelitian

1

Ruang Lingkup Penelitian

1

TINJAUAN PUSTAKA

2

Server Push

2

Bayeux


4

METODE PENELITIAN

6

Pendefinisian Masalah

6

Analisis Sistem

7

Perancangan Sistem

7

Implementasi


7

Pemeliharaan

8

HASIL DAN PEMBAHASAN

8

Analisis Protokol Bayeux

8

Analisis Sistem

10

Perancangan Sistem


13

Implementasi

16

Pemeliharaan

22

SIMPULAN DAN SARAN

22

Simpulan

22

Saran


23

DAFTAR PUSTAKA

23

LAMPIRAN

25

RIWAYAT HIDUP

40

DAFTAR TABEL

1
2
3
4
5

Keterangan tampilan antarmuka chat
Skenario pengujian
Hasil pengujian
Pengujian tingkat keberhasilan pengiriman pesan
Rata-rata jeda waktu pengiriman masing-masing pesan

19
19
20
21
21

DAFTAR GAMBAR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

Periodic polling, long polling, dan streaming (Kuhn et al. 2008)
Mekanisme HTTP transport pada protokol bayeux (Russel et al. 2007)
Alur publish/subscribe (Sun Microsystem 2002)
Format channel pada Bayeux (Russel et al. 2007)
Hirarki channel dan wildcard channel (Russel et al. 2007)
Contoh pesan subscribe request (Russel et al. 2007)
Notasi karakter yang sesuai dengan BNF (Russel et al. 2007)
Tahapan berdasarkan the system life cycle
Format pesan pada saat subscribe request dalam bentuk objek JSON dan
notasi BNF
Format pesan pada proses publish
Contoh penggunaan field ext untuk tujuan autentikasi
Struktur data pada aplikasi chat milik Kuhn (2008)
Skema public channel dan private channel
Mekanisme publish / subscribe pada group channel
Mekanisme publish / subscribe pada private channel
Regular expression untuk username
Alur pendaftaran user
Alur autentikasi pada saat subscribe
Alur autentikasi pada saat publish pesan
Alur subscribe private channel dan group channel
Alur publish pesan pada group channel dan private channel
Tampilan command prompt pada Windows 8 ketika server dijalankan
Halaman depan aplikasi chat
Tampilan halaman chat
Grafik waktu pengiriman pesan pada jeda pengiriman 500 ms
menggunakan jaringan IPB

3
4
5
5
5
6
6
7
9
9
10
11
11
12
12
13
13
14
14
15
16
17
18
18
22

DAFTAR LAMPIRAN
1
2

Message fields pada protokol bayeux
Message definition pada protokol bayeux

25
26

3
4
5
6

ERD pada aplikasi chat yang dikembangkan
File program
Tangkapan layar aplikasi chat
Tabel histogram hasil pengujian

29
30
32
37

PENDAHULUAN
Latar Belakang
Perkembangan teknologi internet kian hari kian pesat terutama pada
teknologi web. Teknologi web yang berkembang salah satunya adalah protokol
HTTP, yang menjadi jalur komunikasi web, saat ini telah mendukung komunikasi
dua arah atau yang disebut bidirectional HTTP. Bidirectional HTTP merupakan
suatu mekanisme dimana client dan server dapat berkomunikasi dalam dua arah
secara real time. Bidirectional HTTP dapat terjadi karena adanya mekanisme
server-side push. Pemanfaatan server-side push banyak diadopsi oleh beberapa
situs seperti situs lelang eBay 1 , di mana pengunjung tidak perlu melakukan
refresh halaman untuk mendapatkan informasi penawar tertinggi. Pemanfaatan
lainnya adalah penggunaan server-side push dalam aplikasi chat berbasis web
(Mesbah dan Deursen 2008).
Bjorgulfsson (2008) dan Kuhn et al. (2008) dalam penelitiannya berhasil
mengimplementasikan server-side push ke dalam aplikasi chat menggunakan
protokol bayeux. Protokol bayeux dikembangkan terutama untuk web, sehingga
sesuai dengan karakteristik dan batasan web browser, web server, serta protokol
HTTP (Kuhn et al. 2008). Selain itu juga protokol bayeux mampu bekerja dengan
baik di belakang proxy serta mudah untuk diimplementasikan (Bjorgulfsson
2008).
Terdapat perbedaan antara penelitian yang dilakukan oleh kedua penelitian
sebelumnya. Kuhn et al. (2008) berhasil mengimplementasikan bayeux ke dalam
aplikasi chat berbasis web, sedangkan Bjorgulfsson (2008) berhasil
mengimplementasikan bayeux ke dalam aplikasi chat menggunakan framework
Greenfoot. Namun demikian kedua penelitian tersebut hanya menyediakan fungsi
group chat, dan tidak menyediakan fungsi private chat.
Dari kedua penelitian yang telah dilakukan sebelumnya, penelitian kali ini
akan mencoba untuk mengimplementasikan protokol bayeux ke dalam sebuah
aplikasi chat berbasis web. Pemilihan aplikasi chat berbasis web ini sesuai dengan
karakteristik bayeux yang bekerja pada protokol HTTP. Perbedaan dengan dua
penelitian sebelumnya adalah adanya penambahan fungsi private chat.
Tujuan Penelitian
Penelitian ini bertujuan untuk mengimplementasikan protokol bayeux ke
dalam sebuah aplikasi chat berbasis web sehingga dapat digunakan pada lintas
web browser. Perbedaan penelitian kali ini dengan dua penelitian sebelumnya
yang dilakukan oleh Kuhn et al. (2008) dan Bjorgulfsson (2008) adalah
penambahan fungsi private chat.
Ruang Lingkup Penelitian
Aplikasi yang dikembangkan pada penelitian kali ini menggunakan protokol
bayeux. Fungsi yang dikembangkan dalam aplikasi ini sesuai dengan fungsi yang
1

http://ebay.com

2
dijelaskan oleh Kuhn et al. (2008) dalam penelitiannya, yaitu pemilihan username,
log in ke dalam aplikasi, pembuatan channel, join channel, dan pengiriman pesan
ke channel.
Uji coba dilakukan dengan menggunakan fasilitas public cloud dan jaringan
internet, serta diakses menggunakan web browser Google Chrome, Mozilla
Firefox, dan Internet Explorer. Pemilihan ketiga web browser di atas berdasarkan
popularitas penggunaan web browser2 yang disadur dari situs StatCounter3.

TINJAUAN PUSTAKA
Server Push
HTTP (RFC 2616) merupakan protokol yang bekerja berdasarkan prinsip
request / response. Protokol ini memiliki entitas client, proxy, dan server. Client
bertugas mengirimkan HTTP request kepada server. Server bertugas untuk
menerima request yang dikirimkan oleh client dan kemudian mengirim balik
response atas request tersebut. Sedangkan proxy bertindak sebagai penghubung
antara client ke server, dan begitu pula sebaliknya. Semua prosedur di atas terjadi
secara synchronous (IETF 2011).
Batasan utama dari protokol HTTP adalah prinsip bahwa client harus
melakukan inisiasi terlabih dahulu untuk mendapatkan informasi dari server
(disebut dengan pull). Prinsip ini mengakibatkaan server tidak memungkinkan
untuk mengirim informasi kepada client tanpa adanya inisiasi dari client (disebut
dengan push), meskipun hal ini sangat dibutuhkan pada beberapa aplikasi yang
bergantung pada informasi real time. Beberapa aplikasi menggunakan AJAX dan
melakukan pull secara berkala dengan interval waktu tertentu (periodic polling)
untuk mendapatkan informasi terbaru (Kuhn et al. 2008). Namun teknik ini
memiliki kekurangan yaitu penggunaan bandwith yang kurang efisien dan
informasi yang didapatkan tidak terjadi secara real time karena adanya latency
(Sampathkumar 2010).
Untuk mengatasi permasalahan di atas, dikembangkanlah beberapa metode
server-side push, yang memungkinkan server mengirimkan informasi kepada
client secara real time. Bozdag et al. (2007) menyebutkan bahwa terdapat dua
metode yang dapat digunakan dalam implementasi server-side push, yaitu HTTP
streaming dan long polling.
HTTP Streaming
HTTP streaming merupakan metode yang paling sederhana dan sudah
diperkenalkan sejak tahun 1992. Terdapat dua metode streaming yang umum
digunakan, yaitu page straming dan service streaming.
Page streaming bekerja dengan cara membuat server melakukan looping
secara terus menerus terhadap request yang diterima. Cara ini mengakibatkan
koneksi antar client dan server terus terbuka. Server akan mendeteksi setiap state
dan event yang terjadi dan mengirimkan setiap informasi terbaru kepada client.
2
3

Periode Juni 2013 sampai dengan Juni 2014
http://gs.statcounter.com

3
Sedangkan client (dalam hal ini adalah web browser) harus memastikan bahwa
setiap informasi yang ditampilkan adalah informasi terbaru.
Service streaming bekerja mirip dengan page streaming. Yang menjadi
perbedaan adalah service streaming bekerja secara background menggunakan
XMLHttpRequest.
Long polling
Long polling dikenal juga dengan istilah asynchronous polling. Pada long
polling setiap request akan ditahan oleh server dan dibiarkan terbuka selama
waktu tertentu (default 45 detik). Apabila selama waktu yang telah ditentukan
tidak ada event yang terjadi, server akan memberikan response timeout dan
meminta client untuk melakukan request ulang. Sedangkan apabila terdapat event
yang terjadi, server akan langsung mengirimkan informasi terbaru kepada client
dan meminta client untuk melakukan request ulang. Perbedaan antara periodic
polling, long polling, dan streaming dapat dilihat pada Gambar 1.

Gambar 1 Periodic polling, long polling, dan streaming (Kuhn et al. 2008)
Dari ketiga metode transport yang disebutkan di atas, streaming memiliki
low latency yang paling rendah dari ketiganya. Namun demikian, penggunaan
sumber daya yang digunakan oleh streaming pada server maupun client lebih
besar dalam hal konsumsi CPU dan memori dibandingkan dengan long polling.

4
Bjorgulfsson (2008) dalam penelitiannya lebih memilih long polling untuk
digunakan dalam implementasi aplikasi chat, karena long polling berjalan dengan
baik di belakang proxy.
Bayeux
Bayeux merupakan salah satu protokol yang mengimplementasikan
bidirectional HTTP dengan menggunakan teknik long polling. Bayeux sendiri
dikembangkan dengan tujuan untuk mempermudah proses routing pesan dari
client ke server, dan begitu pula sebaliknya. Protokol ini memungkinkan
terjadinya pengiriman pesan dari client ke server, server ke client, dan client ke
client (melalui perantara server). Bayeux bersifat terbuka, sehingga pengembang
bebas untuk mengembangkan atau memodifikasinya sesuai dengan kebutuhan
(Russel et al. 2007).
Komunikasi pada protokol bayeux terjadi berdasarkan mekanisme request /
response antara client dan server seperti yang digambarkan pada Gambar 2. Pada
komunikasi tersebut, entitas yang berperan di antaranya bayeux client (BC), useragent (U), proxy (P), origin server (O), dan bayeux server (BS). Komunikasi
diawali dengan request yang dilakukan oleh BC melalui U kepada O yang
kemudian diteruskan BS. Adanya kalanya komunikasi terjadi melalui proxy (P).
Saat melakukan request, BC mengirimkan pesan (M) berupa event (E) yang
dienkapsulasi menjadi M0(E). Setelah M0(E) diterima oleh BS, BS kemudian
membalas request tersebut dengan response M1 yang dikirimkan kepada BS.
BC ---------- U ---------- P -----------| --M0(E)--> |
|
|
| ---HTTP request(M0(E))-->
|
|
|
|
|
|
|
|