• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
52
0
0

Teks penuh

(1)

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

(2)
(3)

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

(4)

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.

(5)

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

(6)

Penguji:

1 Dr Eng Heru Sucoko, SSi, MT

(7)

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

(8)

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

(9)

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

(10)

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

(11)

3 ERD pada aplikasi chat yang dikembangkan 29

4 File program 30

5 Tangkapan layar aplikasi chat 32

(12)
(13)

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

(14)

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

(15)

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

(16)

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.

(17)

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

(18)

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>

(19)

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

(20)

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.

(21)

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>

(22)

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"} }

(23)

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>

(24)

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.

(25)

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

(26)

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

(27)

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,

(28)

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.

(29)

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

(30)

18

Gambar 24. Keterangan dari tampilan Gambar 23 dan Gambar 24 dijelaskan pada Tabel 1.

.

Gambar 23 Halaman depan aplikasi chat

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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:

(36)

24

(37)

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.

(38)

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" } }

(39)

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/**" }

(40)

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" }

(41)

29 Lampiran 3ERD pada aplikasi chat yang dikembangkan

(42)

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 = '';

(43)

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; …

(44)

32

Lampiran 5Tangkapan layar aplikasi chat

Tampilan halaman depan menggunakan browser Google Chrome

(45)

33 Lanjutan

Tampilan halaman depan menggunakan browser Internet Explorer

(46)

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

(47)

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

(48)

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

(49)

37 Lanjutan

(50)

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

(51)

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

(52)

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).

Gambar

Gambar 1 Periodic polling, long polling, dan streaming (Kuhn et al. 2008)
Gambar 2 Mekanisme HTTP transport pada protokol bayeux (Russel et al. 2007)
Gambar 3 Alur publish/subscribe (Sun Microsystem 2002)
Gambar 7 Notasi karakter yang sesuai dengan BNF (Russel et al. 2007)
+7

Referensi

Dokumen terkait

“ correlations”, menjelaskan, “bahwa nilai p value sebesar 0.05,maka nilai tersebut mennjukkan signifkan. ” Dari penjlasan ” itudapat disimpulkan bahwa Ho ditolak

Berdasarkan hasil analisis tersebut, dapat diketahui bahwa penanda kohesi leksikal yang paling banyak digunakan oleh siswa kelas X IPS 2 adalah bentuk pengulangan (repetisi)

- Trust dilemma terhadap Evelyn, yaitu David percaya bahwa Evelyn akan menyebarkan serum penghilang ingatan kepada masyarakat, tapi juga David memiliki pemikiran

Prinsip dasar dalam pengolahan limbah tersebut adalah mendegradasi kandungan organik menjadi unsur-unsur penyusunnya yang tidak berbahaya bagi lingkungan hidup

Analisis potensi wilayah menggunakan parameter location quotient (LQ) dan faktor-faktor pengembangan sapi potong dianalisis dengan model regresi linier berganda,

Dalam penelitian ini, rumusan masalah deskriptif yang digunakan untuk mengidentifikasi/menjelaskan tentang bagaimana peranan audit internal, pencegahan fraud serta

Telah dilakukan karakterisasi unsur-unsur dalam sampel tanah dan sedimen menggunakan teknik AAN dalam rangka uji banding antar laboratorium BATAN yang diselenggarakan oleh

Berdasarkan hal tersebut, penulis akan melakukan pengujian karakteristik cooling pads berbahan sumbu kompor dengan variasi ducting berbentuk balok dan silinder pada transmisi