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
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
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 groupchat dan privatechat.
Kata kunci: REST, bidirectional HTTP, protokol bayeux, aplikasi chat
ABSTRACT
FITRA ADITYA PRADANA. Bidirectional HTTP Implementation on Web-Based 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.
Skripsi
sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer
pada
Departemen Ilmu Komputer
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
Penguji:
1 Dr Eng Heru Sucoko, SSi, MT
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
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 satu-persatu.
Akhir kata, penulis berharap penelitian ini tidak hanya berhenti sampai di sini, tetapi terus dikembangkan sehingga dapat memberikan manfaat bagi masyarakat.
Bogor, Agustus 2014
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
DAFTAR TABEL
1 Keterangan tampilan antarmuka chat 19
2 Skenario pengujian 19
3 Hasil pengujian 20
4 Pengujian tingkat keberhasilan pengiriman pesan 21
5 Rata-rata jeda waktu pengiriman masing-masing pesan 21
DAFTAR GAMBAR
1 Periodic polling,long polling, dan streaming (Kuhn etal. 2008) 3 2 Mekanisme HTTP transport pada protokol bayeux (Russel et al. 2007) 4
3 Alur publish/subscribe (Sun Microsystem 2002) 5
4 Format channel pada Bayeux (Russel et al. 2007) 5 5 Hirarki channel dan wildcard channel (Russel et al. 2007) 5 6 Contoh pesan subscribe request (Russel et al. 2007) 6 7 Notasi karakter yang sesuai dengan BNF (Russel et al. 2007) 6
8 Tahapan berdasarkan the system life cycle 7
9 Format pesan pada saat subscriberequest dalam bentuk objek JSON dan
notasi BNF 9
10 Format pesan pada proses publish 9
11 Contoh penggunaan fieldext untuk tujuan autentikasi 10 12 Struktur data pada aplikasi chat milik Kuhn (2008) 11
13 Skema public channel dan private channel 11
14 Mekanisme publish / subscribe pada group channel 12 15 Mekanisme publish / subscribe pada private channel 12
16 Regular expression untuk username 13
17 Alur pendaftaran user 13
18 Alur autentikasi pada saat subscribe 14
19 Alur autentikasi pada saat publish pesan 14
20 Alur subscribe private channel dan group channel 15 21 Alur publish pesan pada group channel dan private channel 16 22 Tampilan commandprompt pada Windows 8 ketika server dijalankan 17
23 Halaman depan aplikasi chat 18
24 Tampilan halaman chat 18
25 Grafik waktu pengiriman pesan pada jeda pengiriman 500 ms
menggunakan jaringan IPB 22
DAFTAR LAMPIRAN
1 Message fields pada protokol bayeux 25
3 ERD pada aplikasi chat yang dikembangkan 29
4 File program 30
5 Tangkapan layar aplikasi chat 32
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 eBay1, 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
groupchat, dan tidak menyediakan fungsi privatechat.
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
2
dijelaskan oleh Kuhn etal. (2008) dalam penelitiannya, yaitu pemilihan username,
login ke dalam aplikasi, pembuatan channel, joinchannel, 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 realtime. 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 longpolling.
HTTP Streaming
HTTP streaming merupakan metode yang paling sederhana dan sudah diperkenalkan sejak tahun 1992. Terdapat dua metode streaming yang umum digunakan, yaitu pagestraming dan servicestreaming.
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
Periode Juni 2013 sampai dengan Juni 2014 3
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.
Longpolling
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 etal. 2008) Dari ketiga metode transport yang disebutkan di atas, streaming memiliki
4
Bjorgulfsson (2008) dalam penelitiannya lebih memilih long polling untuk digunakan dalam implementasi aplikasi chat, karena longpolling 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), user
-agent (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.
Gambar 2 Mekanisme HTTP transport pada protokol bayeux (Russel et al. 2007) Bayeux bekerja berdasarkan prinsip publish / subscribe. Agar antar client
dapat berkomunikasi secara dua arah, client yang tersambung ke server bayeux harus melakukan publish / subscribe pada topik yang sama. Topik ini biasa disebut dengan channel. Alur publish / subscribe dijelaskan oleh Gambar 3. Mekanisme publish / subscribe dilakukan berdasarkan mekanisme request /
response seperti yang telah dijelaskan pada Gambar 2.
5
Gambar 3 Alur publish/subscribe (Sun Microsystem 2002)
Channel direpresentasikan dengan absolute path pada URI segment tanpa disertai dengan parameter. Format channel pada bayeux dijelaskan pada Gambar 4 yang ditulis dalam notasi BNF. Terdapat reserved channel yang tidak boleh digunakan dalam implementasi, yaitu channel ‘/meta/’ dan channel ‘/service/’.
Channel pada bayeux juga bersifat hirarki, dimana masing-masing segment
mewakili satu tingkat. Selain itu juga, terdapat wildcard channel yang memungkinkan sebuah channel bertindak sebagai channel yang memiliki tingkat di bawahnya. Aturan hirarki dan wildcardchannel digambarkan pada Gambar 5.
Gambar 4 Format channel pada bayeux (Russel et al. 2007)
Gambar 5 Hirarki channel dan wildcard channel (Russel et al. 2007) Untuk saling berkomunikasi, baik antara client-server maupun server-client, pesan yang dipertukarkan dalam protokol bayeux harus berbentuk JSON (javascript objectnotation). Objek JSON tersebut terdiri dari beberapa field yang masing-masing memiliki parameter dan nilai. Terdapat enam belas jenis field yang digunakan pada protokol bayeux sebagaimana tertera pada Lampiran 1. Selain itu juga, penulisan objek JSON tersebut harus sesuai dengan notasi BNF (backus naur form). Gambar 6 merupakan contoh dari format pesan pada saat melakukan
subscribe request, sedangkan Gambar 7 menjelaskan notasi karakter yang digunakan oleh protokol bayeux yang sesuai dengan notasi BNF.
<channel_name> := ‘/’ channel_segments
<channel_segments> := <channel_segment> * (‘/’ <channel_segment>) <channel_segment> := <token>
/foo = top level channel
/foo/bar = 1st level channel
/foo/bar/x = 2nd level channel
/foo/* = single wildcard /foo/bar
6
Gambar 6 Contoh pesan subscribe request (Russel et al. 2007)
Gambar 7 Notasi karakter yang sesuai dengan BNF (Russel et al. 2007)
METODE PENELITIAN
Penelitian ini dilakukan melalui lima proses tahapan dengan menggunakan konsep The System Life Cycle, yaitu pendefinisian masalah, analisis sistem, perancangan sistem, implementasi, dan pemeliharaan (Mc Leod 1993). Alur dari kelima proses tersebut digambarkan melalui Gambar 8.
Pendefinisian Masalah
Protokol bayeux hanya mengatur bagaimana sebuah protokol HTTP dapat digunakan untuk berkomunikasi secara dua arah melalui channel yang telah ditentukan baik dengan melakukan proses publish ataupun subscribe. Bjorgulfsson (2008) dan Kuhn et al. (2008) sebelumnya telah berhasil mengimplementasikan protokol bayeux ke dalam aplikasi chat. Namun aplikasi
chat yang dihasilkan dari penelitian tersebut masih terbatas pada fungsi group chat.
[ {
"channel": "/meta/subscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/foo",
"successful": true, "error": ""
} ]
<alpha> := <lowalpha> | <upalpha>
7
Gambar 8 Tahapan berdasarkan the system life cycle
Analisis Sistem
Protokol yang digunakan dalam pengembangan aplikasi chat pada penelitian ini menggunakan adalah bayeux. Analisis terhadap protokol bayeux sangat diperlukan untuk mengetahui bagaimana proses pertukaran pesan antara client dan
server, khususnya pada proses publish dan subscribe. Tahapan analisis terhadap kedua penelitian yang telah dilakukan sebelumnya juga dibutuhkan untuk menjawab masalah yang muncul dari tahapan pendefinisian masalah di atas.
Perancangan Sistem
Aplikasi yang akan dikembangkan pada penelitian kali ini diharapkan mampu menyediakan baik fungsi group chat maupun private chat. Detil mengenai fungsi yang akan dikembangkan berdasarkan penelitian yang telah dilakukan sebelumnya oleh Kuhn et al. (2008) yaitu pemilihan username, log in
ke dalam aplikasi, pembuatan channel, join channel, dan pengiriman pesan ke
channel.
Implementasi
Lingkungan implementasi yang digunakan pada penelitian ini dibagi menjadi ke dalam dua fase, yaitu fase pengembangan dan fase produksi.
Fase pengembangan
8
1 Perangkat keras:
a Prosesor AMD Quad Core A6-1450M 1.0 GHz b Memori RAM 6 GB
c Media penyimpanan 500 GB 2 Perangkat lunak:
a Sistem operasi Windows 8 b Editor teks Geany 1.23.1
c Bahasa pemrograman Javascript dengan menggunakan framework Node.js 0.10.24 pada sisi server
d MongoDB 2.4.9 sebagai basis data
e Faye sebagai modul Bayeux pada Node.js
f HTML5 dan framework Twitter Bootstrap 3.1.1 untuk antarmuka client
g Git sebagai control versioning system Fase produksi
Pada fase produksi, aplikasi yang telah diimplementasikan pada fase pengembangan akan diletakkan pada public cloud agar dapat dilakukan uji coba.
Public cloud yang digunakan memiliki spesifikasi sebagai berikut: Openshift Cloud Service
Sistem operasi Red Hat Enterprise
Memori 512 MB dengan kapasitas penyimpanan 1 GB Web server Apache 2.2.22
Node.js 0.10
Pemeliharaan
Hasil dari penelitian ini diharapkan akan terus dikembangkan baik dari sisi fitur maupun fungsionalitas. Pemeliharaan dilakukan dengan cara membuka kode sumber dari hasil penelitian pada public repository agar pengembang lain dapat melakukan review dan memberikan saran terhadap peningkatan kinerja sistem. Kode sumber dari hasil penelitian ini akan dirilis dengan lisensi terbuka, dalam berdasarkan mekanisme publish / subscribe. Kedua mekanisme tersebut dilakukan dengan cara mengirimkan pesan request melalui metode HTTP POST dari client
ke server. Apabila request tersebut berhasil, server akan mengirimkan pesan
response balik dari server ke client.
9
clientId, serta subscription. Field channel berisi channel kemana pesan akan dikirimkan, clientId berisi unique id yang didapatkan masing-masing client
setelah berhasil melakukan handshake, dan subscription yang berisi channel
kemana client akan melakukan subscribe. Sebagai contoh, Gambar 9 menunjukkan pesan dalam bentuk JSON dan BNF ketika sebuah client dengan
clientId‘123abc’ yang ingin melakukan subscribe pada channel ‘/worldcup’.
Gambar 9 Format pesan pada saat subscriberequest dalam bentuk objek JSON dan notasi BNF
Apabila proses subscribe request berhasil, server akan memberikan
response yang juga dalam bentuk JSON. Setelah itu client akan melakukan inisiasi koneksi long polling dengan server. Dengan demikian dapat kita simpulkan bahwa subscriberequest sebenarnya merupakan longpollingrequest.
Proses publish dilakukan dengan mengirimkan pesan publish request
melalui HTTP POST dari client ke server. Sama seperti subscribe request, pesan pada publishrequest juga harus berbentuk JSON, namun dengan field yang sedikit berbeda di dalamnya. Field yang dibutuhkan pada saat melakukan publish request adalah channel yang merupakan channel tujuan kemana pesan akan di-publish,
clientId, serta data yang berisi pesan yang hendak di-publish. Gambar 10 menunjukkan format pesan dalam bentuk JSON dan BNF pada saat melakukan
publish pesan.
Gambar 10 Format pesan pada proses publish
JSON: [ {
"channel": "/meta/subscribe", "clientId": "123abc",
"subscription": "/worldcup" }
]
BNF:
<message> := <channel> | <clientid> | <subscription> <channel> := '/' <token> * ('/' <token>)
<clientid> := <token>
<subscription> := '/' <token> * ('/' <token>)
JSON:
<message> := <channel> | <clientid> | <data> <channel> := '/' <token> * ('/' <token>) <clientid> := <token>
10
Daftar lengkap dari format pesan yang terdapat pada protokol bayeux dapat dilihat pada Lampiran 2.
Bayeux menyediakan field tambahan yang bisa disertakan dalam pesan yang dipertukarkan, yaitu field ext. Field ini bersifat fleksibel dan memiliki format JSON juga. Dengan field ini, pengembang yang ingin melakukan implementasi menggunakan protokol bayeux bebas untuk membuat field baru yang diinginkan, selama field tersebut berada di dalam field ext. Sebagai contoh, Gambar 11 menunjukkan penggunaan field ext yang berisi field username dan password
untuk tujuan autentikasi pesan.
Gambar 11 Contoh penggunaan fieldext untuk tujuan autentikasi
Pada dasarnya protokol bayeux tidak memiliki mekanisme khusus mengenai autentikasi pada client maupun channel. Namun demikian Russel et al. (2007) memberikan tiga alternatif yang dapat digunakan untuk mengatasi kebutuhan autentikasi pada implementasi bayeux, yaitu:
1 Tidak menggunakan autentikasi.
2 Autentikasi dasar pada teknologi web (cookie atau session).
3 Autentikasi pada proses publish maupun subscribe dengan memanfaatkan kolom ext pada pesan.
Analisis Sistem
Aplikasi chat yang dibuat oleh Kuhn et al. (2008) dikembangkan menggunakan protokol bayeux. Aplikasi ini dibangun dengan menggunakan bahasa pemrograman JavaScript. Fungsi utama dari aplikasi tersebut di yaitu pemilihan username, login, pembuatan channel, join channel, dan pengiriman pesan.
Pada aplikasi tersebut terdapat tiga entitas utama yang menjadi inti dari sebuah aplikasi chatting, yaitu channel, user, dan message. Channel dan user
digunakan untuk mengidentifikasi siapa yang mengirimkan pesan dan kemana pesan tersebut dikirimkan. Struktur data dari ketiga entitas tersebut dijelaskan pada Gambar 12.
"ext": {"username": "abc", "password": "123"} }
11
Gambar 12 Struktur data pada aplikasi chat milik Kuhn (2008)
Pembagian channel
Kuhn et al. (2008) dan Bjorgulfsson (2008) dalam penelitiannya hanya menjelaskan bagaimana pengiriman pesan terjadi di dalam group. Tidak ada mekanisme pengiriman pesan seacara private dan semua komunikasi terjadi pada
group channel. Implementasi private chat dapat dilakukan dengan melakukan pembagian channel.
Pembagian channel dapat dilakukan dengan mengelompokkan channel ke dalam dua kelompok, yaitu group channel dan private channel. Pembagian
Agar memudahkan dalam identifikasi dan implementasi, kedua kelompok
channel tersebut digambarkan pada skema yang tertera pada Gambar 13.
Gambar 13 Skema public channel dan private channel
Bagaimana client berkomunikasi dengan client lainnya
Berdasarkan pembagian channel di atas, dapat ditentukan bagaimana client
berkomunikasi dengan client lainnya, yaitu melalui group chat dan private chat.
Group chat terjadi pada group channel. Komunikasi pada group channel terjadi secara publik, dimana pesan yang di-publish oleh suatu client akan di-broadcast
ke seluruh client yang melakukan subscribe pada channel yang sama. Seluruh
client dapat melakukan subscribe pada seluruh group channel yang ada. Tidak ada mekanisme khusus pada group channel ini. Gambar 14 menunjukkan bagaimana sebuah pesan yang di-publish oleh suatu client dan client lainnya menerima pesan tersebut.
Group channel = /group/<group_channel>
12
Gambar 14 Mekanisme publish / subscribe pada group channel
Private chat terjadi pada private channel. Mekanisme publish pada private chat mengacu kepada message routing pada electronic mail. Masing-masing
client memiliki tepat satu private channel, dimana hanya client tersebut yang dapat melakukan subscribe pada channel miliknya. Ketika suatu client ingin mengirimkan pesan secara private kepada client lainnya, pengiriman dapat dilakukan dengan cara publish pesan ke pada channel client tujuan. Pertukaran pesan melalui private channel ini mengharuskan client mengetahui channel dari
client tujuan sebelum mengirimkan (publish) pesan. Informasi mengenai client
yang lainnya disampaikan oleh server ketika client baru bergabung pada channel
yang sama. Gambar 15 menunjukkan bagaimana dua client saling berkomunikasi melalui private channel-nya masing-masing.
Gambar 15 Mekanisme publish / subscribe pada private channel Autentikasi client
Setiap client ditandai dengan sebuah username sebagai pengenal antar-client.
13 dilakukan berdasarkan username yang digunakan. Selain itu juga, autentikasi ini bertujuan agar hanya client yang tepat yang mampu melakukan subscribe pada
private channel miliknya. Autentikasi dilakukan pada saat client melakukan
subscribe channel dan publish pesan.
Perancangan Sistem
Pemilihan Username
Pada sistem yang akan dikembangkan, fungsi pemilihan username
direpresentasikan ke dalam sebuah proses pendaftaran (registrasi). Setiap client
(user) diwakili oleh satu username. Selain berfungsi sebagai identifier, username
juga berfungsi sebagai private channel segment. Penamaan username mengikuti aturan penamaan channel. Namun agar lebih mudah dimengerti, karakter yang digunakan pada username dibatasi hanya pada karakter alphanumeric dengan panjang karakter antara lima sampai enam belas karakter. Format username yang dapat digunakan dijelaskan oleh regularexpression seperti Gambar 16.
Gambar 16 Regular expression untuk username
Sebelum dapat digunakan, user harus mendaftarkan username-nya terlebih dahulu. Selain username, informasi yang dibutuhkan dalam proses pendaftaran adalah password yang akan digunakan. Data mengenai user kemudian akan disimpan ke dalam basis data. Alur pendaftaran user dijelaskan pada Gambar 17.
Gambar 17 Alur pendaftaran user
Log in
Sistem yang akan dikembangkan menggunakan mekanisme autentikasi
publish maupun subscribe sesuai dengan alternatif yang diberikan oleh Russel (2007). Mekanisme ini dilakukan dengan menambahkan dua kolom pada pesan yang akan dikirimkan baik pada subscribe maupun pada saat publish. Dua kolom
14
tersebut masing-masing berisi username dan password. Dengan cara ini, apabila
username dan password yang diberikan tidak sesuai, user tidak akan dapat melakukan subscribe maupun publish pesan. Alur dari autentikasi ini dijelaskan pada Gambar 18 dan Gambar 19.
Gambar 18 Alur autentikasi pada saat subscribe
Gambar 19 Alur autentikasi pada saat publish pesan
Pembuatan Channel
Berdasarkan analisis sistem yang telah dilakukan di atas, channel dibagi menjadi dua, yaitu private channel dan group channel. Private channel
15 dibuat ketika user melakukan pendaftaran usernam. Sedangkan untuk group channel, channel dibuat ketika user melakukan subscribe pada channel tersebut.
Join Channel
Mekanisme subscribe channel dibagi menjadi dua, yaitu subscribe pada
private channel dan subscribe pada group channel. Pada private channel,
subscribe hanya dapat dilakukan apabila user telah terautentikasi, dalam hal ini
username dan password yang diberikan sesuai. Apabila tidak sesuai, user tidak dapat melakukan subscribe pada channel miliknya. Sedangkan pada group channel, subscribe hanya dapat dilakukan apabila user telah berhasil melakukan
subscribe pada private channel miliknya. Setiap user bisa melakukan subscribe
pada lebih dari satu group channel. Mekanisme subscribe pada private channel
dan group channel digambarkan pada Gambar 20.
Gambar 20 Alur subscribe private channel dan group channel
Saat user telah berhasil melakukan subscribe pada suatu group channel,
16
tentang kehadiran user tersebut. Notifikasi juga akan diberikan ketika terdapat
user yang meninggalkan channel. Server juga akan menyimpan siapa saja yang terhubung ke dalam masing-masing group channel ke dalam basis data. Hal ini bertujuan agar suatu user dapat mengambil informasi siapa saja yang sedang melakukan subscribe pada group channel yang sama dengan dirinya pada saat itu. Lampiran 3 menggambarkan ERD dari basis data yang digunakan pada penelitian ini.
Publish Channel
Sama halnya dengan subscribe channel, publish pesan juga terdiri dari
publish pada private channel dan publish pada grchanneoup channel. Proses
publish hanya bisa dilakukan setelah client telah log in ke dalam sistem sebagaimana digambar pada alur Gambar 21.
Gambar 21 Alur publish pesan pada group channel dan private channel
Implementasi
Implementasi dalam penelitian ini dibagi menjadi ke dalam dua bagian, yaitu implementasi server dan client.
Server
Program untuk server terdiri dari empat buah file yaitu package.json, config.js, model.js, dan server.js. File package.json merupakan file yang wajib ada pada sebuah aplikasi berbasis Node.js. File ini berisi meta data mengenai aplikasi yang dibuat serta dependensi yang dibutuhkan untuk menjalankan aplikasi. Dengan adanya file ini, proses instalasi aplikasi pada server akan lebih mudah.
17 dimana server akan menjalankan servicenya, dan path URI dimana bayeux akan bekerja. Sedangkan file ketiga yaitu model.js yang berfungsi untuk melakukan abstraksi basis data yang digunakan, dalam hal ini adalah sqlite3.
File server.js merupakan file utama dan memegang tugas penting, di antaranya inisiasi web server, routing URI, autentikasi user, dan routing pesan.
File tersebut berisi baris perintah untuk melakukan inisiasi modul faye sebagai
implementor bayeux, inisiasi basis data, inisiasi server, integrasi bayeux ke dalam
server, dan menjalankan server di port yang sudah ditentukan. Agar dapat menampilkan halaman web yang menjadi antarmuka client, server harus mampu menangani routing URI. Dalam penelitian ini, server hanya mampu mengenali URI segment ‘/’, ‘/signup’, ‘/signin’, ‘/chat’, dan ‘/userlist’. Setiap URI segment
yang dipanggil oleh client, server akan memanggil fungsi yang telah ditentukan. Fungsi autentikasi berada pada file server.js. Fungsi autentikasi dilakukan dengan cara membandingkan nilai fieldusername dan password dengan nilai yang sudah tersimpan di dalam basis data. Apabila terjadi kesalahan yang diakibatkan oleh tidak sesuainya username dan password, server akan memberikan nilai error
pada user. Seluruh potongan kode dari file config.js dan server.js dapat dilihat di Lampiran 4.
Untuk menjalankan aplikasi pada komputer, file server.js harus dipanggil melalui command prompt atau terminal seperti yang terlihat pada Gambar 22. Perintah untuk memanggilnya adalah node server.js.
Gambar 22 Tampilan commandprompt pada Windows 8 ketika server dijalankan
Client
Program untuk client berupa halaman web yang dijalankan melalui web
server. Perancangan halaman web untuk client menggunakan framework Twitter Bootstrap. Terdapat dua file utama untuk menangani halaman client ini, yaitu index.html dan chat.html. File index.html merupakan halaman depan dari client
Di sini terdapat berbagai menu yang bisa digunakan, yaitu menu ‘Masuk’ untuk login dan menu ‘Daftar’ untuk registrasi user. Tampilan untuk halaman depan
18
Gambar 24. Keterangan dari tampilan Gambar 23 dan Gambar 24 dijelaskan pada Tabel 1.
.
Gambar 23 Halaman depan aplikasi chat
19 Tabel 1 Keterangan tampilan antarmuka chat
No Keterangan
1 Tautan beranda (home)
2 Tautan tentang panduan penggunaan aplikasi
3 Tautan kode sumber aplikasi yang diletakkan di layanan GitHub
4 Tombol masuk (login)
5 Tombol daftar (registrasi)
6 Tombol join (bergabung) ke group channel
7 Tombol keluar (logout)
Pengujian dilakukan dengan menggunakan satu buah komputer dengan sistem operasi Windows 8 dan tiga buah web browser yang berbeda, masing-masing adalah Google Chrome, Mozilla Firefox, dan Internet Explorer. Aplikasi
chat yang telah dikembangkan diletakkan pada fasilitas public cloud, sehingga membutuhkan sambungan internet untuk mengaksesnya. Alamat aplikasi chat tersebut adalah http://bayeux.html5.web.id/. Tahapan pengujian dijelaskan pada Tabel 2.
Tabel 2 Skenario pengujian
No Skenario Hasil yang diharapkan
1 Registrasi user pada masing-masing web
browser dengan username yang berbeda.
- Alice
- Barbara
- Charlie
Proses registrasi berhasil, dan user akan
otomatis log in.
2 Ketiga user yang telah dibuat sebelumnya
melakukan subscribe pada group Ilkom dan
IPB
Proses subscribe berhasil, muncul tab
masing-masing group, serta muncul
notifikasi bahwa masing-masing user
bergabung ke dalam group tersebut.
3 Alice mengirimkan pesan bertuliskan ‘Hai’
pada group Ilkom.
Semua user mendapatkan pesan tersebut
pada tab group Ilkom.
4 Barbara mengirimkan pesan bertuliskan ‘Hai
juga’ pada group Ilkom.
Semua user mendapatkan pesan tersebut
pada tabgroup Ilkom.
5 Charlie mengirimkan pesan bertuliskan
‘Halo’ pada group IPB.
Semua user mendapatkan pesan tersebut
pada tab group IPB.
6 Alice memulai private chat dengan Barbara
dan mengirimkan pesan ‘Apa kabar?’. Hanya Barbara yang menerima pesan tersebut pada tab baru yang otomatis muncul.
7 Barbara membalas pesan Alice melalui
private chat dan mengirimkan pesan
‘Kabarku baik’.
Hanya Alice yang menerima pesan tersebut.
8 Charlie meninggalkan aplikasi chat dengan
cara log out.
Alice dan Barbara menerima notifikasi
bahwa Charlie meninggalkan group
20
Pengujian Pada Jaringan Publik
Sesuai dengan skenario yang telah dibuat, pengujian dilakukan dengan menggunakan tiga buah web browser yang berbeda pada satu komputer yang sama. Adapun hasil pengujian berdasarkan pada skenario yang telah dibuat dijabarkan pada Tabel 3.
Tabel 3 Hasil pengujian
No Skenario Hasil yang diharapkan Sesuai / Tidak
1 Registrasi user pada
masing-masing web browser dengan
username yang berbeda.
masing user bergabung ke
dalam group tersebut.
6 Alice memulai private chat
dengan Barbara dan mengirimkan
7 Barbara membalas pesan Alice
melalui private chat dan
mengirimkan pesan ‘Kabarku
21 untuk jaringan IPB dan pukul 15.00 WIB sampai dengan 16.30 WIB untuk jaringan Telkom Speedy.
Tabel 4 Pengujian tingkat keberhasilan pengiriman pesan
Jaringan IPB Telkom Speedy 3Mbps
Write delay
Tabel 4 menunjukkan tingkat keberhasilan pengiriman pesan berdasarkan jeda waktu pengiriman antar pesan. Terlihat tidak ada perbedaan yang signifikan antara keempat rentang waktu tersebut.
Tabel 5 Rata-rata jeda waktu pengiriman masing-masing pesan
Write delay
22
Gambar 25 Grafik waktu pengiriman pesan pada jeda pengiriman 500ms menggunakan jaringan IPB
Pemeliharaan
Agar dapat terus dikembangkan, kode sumber dari penelitian ini diletakkan pada publicrepository dengan menggunakan layanan GitHub. Repository tersebut dapat diakses melalui alamat https://github.com/fitraditya/roompy. Kode sumber dari penelitian ini dirilis menggunakan lisensi MIT, sehingga pengembang lain bebas memanfaatkannya.
SIMPULAN DAN SARAN
Simpulan
Dari penelitian yang telah dilakukan, dapat diambil kesimpulan, yaitu: 1 Protokol bayeux dapat digunakan dengan baik pada pengembangan aplikasi
chat. Hal ini didasari kemampuannya dalam melakukan routing pesan baik pada groupchannel dan privatechannel.
2 Implementasi fungsi pemilihan username, login ke dalam aplikasi, pembuatan
23 4 Tingkat keberhasilan pengiriman pesan pada aplikasi yang dikembangkan mencapai 98% pada interval pesan 500 milidetik. Sedangkan untuk interval di atas 1000 milidetik, tingkat keberhasilan mencapai 99%.
5 Rata-rata delay pengiriman pesan pada interval 500 milidetik mencapai 1,4 detik. Semakin besar interval pengiriman pesan, semakin kecil waktu delaynya.
Saran
Penelitian ini masih terbatas dan bersifat sederhana. Untuk itu dalam pengembangan ke tahap selanjutnya, khususnya dalam pengembangan aplikasi chat, ada beberapa saran yang dapat dilakukan. Di antaranya:
1 Rancangan aplikasi pada sisi client yang mendukung mobile platform.
2 Notifikasi yang lebih lengkap, seperti apakah pesan berhasil dikirimkan atau diterima.
3 Alternatif protokol lainnya yang mendukung bidirectional HTTP.
DAFTAR PUSTAKA
Bjorgulfsson B. 2006. Greenfoot networking support [disertasi]. Canterbury (UK): University of Kent.
Bozdag E, Mesbah A, Van Deursen A. 2007. A comparison of push and pull techniques for AJAX. Di dalam: 9th IEEE International Workshop on Web Site Evolution, WSE 2007; 2007 Okt 5-6; Paris, Perancis. Washington (US): IEEE. hlm 15-22. scenarios. Ubiquitous Computing and Communication Journal (UbiCC). 3(2008).
McLeod R Jr. 1993. Management Information System: A Study of Computer-Based Information System. Ed Ke-5. New York (US): MacMillan.
Mesbah A, Van Deursen A. 2008. A component- and push-based architectural
Sampathkumar PK. 2010. Implementing Web messaging: Connect Ajax clients to near-real-time data with Web Sphere Application Server Community Edition.
[diunduh 2014 Maret 8]. Tersedia dari:
24
25 Lampiran 1 Message fields pada protokol bayeux
Messagefields pada protokol bayeux
Field Keterangan
channel Field ini berisi tujuan kemana pesan akan dikirimkan baik dari client maupun server. Setiap pesan yang dikirimkan, wajib memiliki field ini.
version Field ini menandakan versi dari protokol Bayeux yang digunakan. Field ini wajib disertakan pada
channel‘/meta/handshake’.
minimumVersion Sama seperti field version. Field ini berisi minimum versi yang digunakan oleh client / server.
supportedConnectionTypes Field ini berisi metode yang dapat digunakan oleh HTTP transport. Field ini harus disertakan pada saat
handshake request.
clientId Field ini merupakan unique id dari client yang diberikan oleh server. Field ini wajib disertakan di setiap pesan yang dikirimkan, kecuali pada saat proses saat handshake request.
advice Field ini berisi metode yang disarankan oleh server
kepada client dalam melakukan komunikasi.
connectionType Field ini merupakan field yang wajib diisi pada saat
client melakukan connect request. Field ini berisi
menerima connectrequest dari server.
timestamp Berisi nilai waktu dalam format GMT. Field ini bersifat optional.
data Field ini berisi pesan yang dikirimkan client pada saat melakukan publish. Field ini berbentuk JSON.
connectionId Deprecated, hanya digunakan pada saat pengembangan protokol bayeux.
successful Field ini bertipe boolean. Field ini disertakan pada saat server mengirimkan response kepada client.
eubscription Field ini berisi channel tujuan kemana client akan melakukan subscribe.
error Field ini bertipe boolean. Field ini disertakan pada saat server mengirimkan response kepada client.
ext Field ini merupakan field tambahan yang bisa digunakan secara bebas dalam implementasinya.
Field ini berbentuk JSON.
26
Lampiran 2 Message definition pada protokol bayeux
Handshakerequest
"channel": "/meta/handshake", "version": "1.0",
"minimumVersion": "1.0beta",
"supportedConnectionTypes": ["long-polling", "callback-polling", "iframe"] }
]
[ {
"channel": "/meta/handshake", "version": "1.0",
"minimumVersion": "1.0beta",
"supportedConnectionTypes": ["long-polling","callback-polling"], "clientId": "Un1q31d3nt1f13r",
"successful": true, "authSuccessful": true,
"advice": { "reconnect": "retry" } }
]
[ {
"channel": "/meta/handshake", "version": "1.0",
"minimumVersion": "1.0beta",
"supportedConnectionTypes": ["long-polling","callback-polling"], "successful": false,
"error": "Authentication failed", "advice": { "reconnect": "none" } }
]
[ {
"channel": "/meta/connect", "clientId": "Un1q31d3nt1f13r", "connectionType": "long-polling" }
]
[ {
"channel": "/meta/connect", "successful": true,
"error": "",
"clientId": "Un1q31d3nt1f13r", "timestamp": "12:00:00 1970", "advice": { "reconnect": "retry" } }
27
"channel": "/meta/disconnect", "clientId": "Un1q31d3nt1f13r" }
]
[ {
"channel": "/meta/disconnect", "clientId": "Un1q31d3nt1f13r", "successful": true
} ]
[ {
"channel": "/meta/subscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/foo/**" }
]
[ {
"channel": "/meta/subscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/foo/**",
"channel": "/meta/subscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/bar/baz", "successful": false,
"error": "403:/bar/baz:Permission Denied" }
]
[ {
"channel": "/meta/unsubscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/foo/**" }
28 Lanjutan
Successfulunsubscriberesponse
Publishrequest
Successfulpublishresponse
[ {
"channel": "/meta/unsubscribe", "clientId": "Un1q31d3nt1f13r", "subscription": "/foo/**", "successful": true,
"error": "" }
]
[ {
"channel": "/some/channel", "clientId": "Un1q31d3nt1f13r",
"data": "some application string or JSON encoded object", "id": "some unique message id"
} ]
[ {
"channel": "/some/channel", "successful": true,
"id": "some unique message id" }
29 Lampiran 3ERD pada aplikasi chat yang dikembangkan
30
Lampiran 4 File program
File package.json
Potongan kode pada file server.js
Fungsi autentikasi pada file server.js {
"name": "bayeux-chat", "version": "0.1.0",
"description": "Simple chat application using node.js and faye", "author": "Fitra Aditya <fitra@g.pl>",
"repository": {
"url": "https://github.com/fitraditya/bayeux-chat" },
var bayeux = new faye.NodeAdapter({mount: config.path, timeout: 45}); …
var db = new model(); …
// Handle requests
var server = http.createServer(function(request, response) { …
incoming: function(message, callback) { var username = '';
var password = '';
…
31
Fungsi routing URI pada server.js …
// Handle requests
var server = http.createServer(function(request, response) { var url_parts = url.parse(request.url);
// Routes
switch(url_parts.pathname) { case '/':
display_page('/index.html', request, response); break;
case '/signup':
handle_signup(url_parts.pathname, request, response); break;
case '/signin':
handle_signin(url_parts.pathname, request, response); break;
case '/chat':
display_page('/chat.html', request, response); break;
case '/userlist':
handle_userlist(url_parts.pathname, request, response); break;
default:
display_page(url_parts.pathname, request, response); }
return; …
32
Lampiran 5Tangkapan layar aplikasi chat
Tampilan halaman depan menggunakan browser Google Chrome
33 Lanjutan
Tampilan halaman depan menggunakan browser Internet Explorer
34 Lanjutan
Tampilan ketika user berhasil melakukan subscribe pada groupchannel. Muncul notifikasi tentang siapa saja yang baru bergabung (user Alice browser
Chrome)
Tampilan ketika user Alice mengirimkan pesan 'Hai' pada group Ilkom (user
35 Lanjutan
Tampilan ketika user Barbara mengirimkan pesan 'Hai juga' pada group Ilkom (user Charlie browser Internet Explorer)
Tampilan ketika user Charlie mengirimkan pesan 'Halo' pada group IPB (user
36 Lanjutan
Tampilan ketika user Alice mengirimkan pesan 'Apa Kabar?' kepada Barbara secara private (user Barbara browser Firefox)
Tampilan ketika user Barbara membalas pesan Alice secara private (user Alice
37 Lanjutan
38 Lampiran 6Tabel histogram hasil pengujian
Histogram hasil pengujian berdasarkan waktu pengiriman pesan menggunakan Jaringan IPB Jaringan IPB
500 ms 1000 ms 1500 ms 2000 ms
1 2 3 1 2 3 1 2 3 1 2 3
F C F C F C F C F C F C F C F C F C F C F C F C
847 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 1 1.01% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00%
1347 48 48.98% 46 46.94% 42 42.86% 93 93.94% 91 91.92% 84 84.85% 97 98.99% 98 98.99% 95 95.96% 98 98.99% 91 91.92% 98 98.99% 1847 47 96.94% 51 98.98% 49 92.86% 5 98.99% 6 97.98% 14 98.99% 0 98.99% 0 98.99% 2 97.98% 0 98.99% 2 93.94% 0 98.99% 2347 2 98.98% 1 100.00% 4 96.94% 1 100.00% 1 98.99% 1 100.00% 1 100.00% 1 100.00% 0 97.98% 1 100.00% 1 94.95% 1 100.00% 2847 0 98.98% 0 100.00% 3 100.00% 0 100.00% 1 100.00% 0 100.00% 0 100.00% 0 100.00% 1 98.99% 0 100.00% 3 97.98% 0 100.00% 3347 1 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 1 100.00% 0 100.00% 0 98.98% 0 100.00% 3847 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 1 98.99% 0 100.00% 4347 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 1 100.00% 0 100.00% 4847 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 5347 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 5847 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 6347 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 6847 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 7347 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 7847 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00%
Keterangan:
- F: Frequency
- C: Cumulative
39
Lanjutan
Histogram hasil pengujian berdasarkan waktu pengiriman pesan menggunakan Telkom Speedy 3Mbps Telkom Speedy 3Mbps
500 ms 1000 ms 1500 ms 2000 ms
1 2 3 1 2 3 1 2 3 1 2 3
F C F C F C F C F C F C F C F C F C F C F C F C
847 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 1 1.01% 0 0.00% 0 0.00% 0 0.00% 0 0.00% 0 0.00%
1347 39 39.80% 30 30.61% 37 37.76% 91 91.92% 91 91.92% 90 90.91% 97 97.98% 87 87.88% 97 97.98% 96 96.97% 98 96.97% 97 97.98% 1847 52 92.86% 43 74.49% 47 85.71% 7 98.99% 7 98.99% 7 97.98% 1 98.99% 5 92.93% 1 98.99% 2 98.99% 1 100.00% 1 100.00% 2347 7 100.00% 14 88.78% 14 100.00% 1 100.00% 0 98.99% 2 100.00% 1 100.00% 6 100.00% 1 100.00% 1 100.00% 0 100.00% 1 100.00% 2847 0 100.00% 6 94.90% 0 100.00% 0 100.00% 0 98.99% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 3347 0 100.00% 3 97.96% 0 100.00% 0 100.00% 1 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 3847 0 100.00% 0 97.96% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 4347 0 100.00% 1 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 4847 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 5347 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 5847 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 6347 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 6847 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 7347 0 100.00% 0 98.98% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 7847 0 100.00% 1 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00% 0 100.00%
Keterangan:
- F: Frequency
- C: Cumulative
40
RIWAYAT HIDUP
Penulis dilahirkan di Surabaya 25 April 1990, merupakan anak pertama dari pasangan Arief Syuhada dan Ribut Yuliarti. Setelah menamatkan pendidikannya di Sekolah Menengah Atas Negeri 1 Pamekasan, penulis melanjutkan pendidikannya di Departemen Ilmu Komputer Institut Pertanian Bogor melalui Undangan Seleksi Masuk IPB (USMI).