Bagi senior developer pasti sudah tidak asing dengan istilah dan jenis-jenis Request ke server. Bagi yang junior atau awam, ilustrasi singkatnya adalah ketika kamu browsing Facebook membuka halaman Home,profile, chat,page dsb itu sebenarnya adalah proses request/meminta data ke Server.

Lalu Server akan mengolah request dan mengirimkan kembali hasilnya kepada Client (Browser + kita) . Server sendiri akan memberikan kita output sesuai tipe request dan protokol yang ditentukan. Misal saat kamu membuka Facebook, browser akan membaca request apa saja yang diminta (oleh apps yang ada di facebook) ke Server nya.

Web sebesar dan se-komplex FB tentu bisa menggunakan banyak jenis Request yang berbeda, untuk Home, Chat, Comment, Notifikasi dsb.

Untuk lebih memahami tipe-tipe Request ke Server, simak point-point berikut :

Regular http:

  1. Client requests sebuah halaman web ke server.
  2. Server menerima request dan mengkalkulasi respon
  3. Server lalu mengirim respon balik ke client.


Reguler HTTP request

Reguler http bisa dilakukan dengan load/reload halaman biasa pada browser atau dengan Ajax.

AJAX Polling:

  1. Client request sebuah halaman web ke server pakai regular http (seperti diatas).
  2. Request diteruskan oleh Javascript (ajax) dan diulang dalam waktu tertentu. misal setiap 1 detik dsb (contoh pada Chatting sederhana, agar kamu dan teman bisa langsung melihat chat nya, request dilakukan terus-menerus dalam 1 detik. 
  3. Server mengolah setiap response lalu dikirimkan kembali ke Client.

Dengan Ajax, kita bisa melakukan banyak request(multiple request) dalam satu kali load. Dan juga tanpa harus me-refresh browser Request akan jalan sendirinya sesuai waktu yang ditentukan. contoh di Javascript 

function getTimeline(){
$.ajax({
.....
.....
});
}
setTimeout(getTimeline,1000); //request setiap 1 detik sekali

ajax Polling

AJAX Long-Polling:

  1. Client request sebuah halaman web ke server pakai regular http (seperti diatas).
  2. Request diteruskan oleh Javascript (ajax).
  3. Server cek apakah request telah tersedia atau tidak. jika ya maka respon jika tidak maka request akan ditahan dalam waktu yang lama (misal 10 menit) dan baru di respon jika data yang di request sudah tersedia.
  4. Client menerima respon lalu membuka kembali request baru ke server.

HTML5 Server Sent Events (SSE)

HTML5 Server Sent Events (SSE) / EventSource:

  1. Client request sebuah halaman web ke server pakai regular http.
  2. Javascript meneruskan dan membuka koneksi server.
  3. Lalu server kirim  event ke client ketika informasi baru dari server sesuai request sudah tersedia.

    NOTES  :

    • SEE melakukan Real-time traffic dari server ke client.
    • Server harus punya fitur event loop (bisa juga dicoding)
    • Tidak bisa konek ke server dari luar (beda domain)

Websockets request

HTML5 Websockets:

  1. Client request sebuah halaman web ke server pakai regular http
  2. Javascript meneruskan dan membuka koneksi server.
  3. Masing-masing server dan Client bisa langsung menghasilkan respon jika sudah ada info baru pada masing-masing. 

    • Real-time traffic dari server to the client dan client ke server
    • Server harus punya fitur event loop (bisa juga dicoding)
    • WebSockets bisa cross domain akses. 
    • Banyak di implement untuk real-time Chatting, Push notification, Monitoring real-time traffic pada web dsb
    • Node.js dan socket.io adalah yang paling populer saat ini untuk Websockets


Websockets request

Comet

Comet adalah kumpulan teknik (advance) untuk melakukan request seperti Regular http Dimana koneksi ke server aka terus dibuka (long-held http request) dan server akan segera mengirimkan data/respon ke Client jika sudah ada data yang tersedia. Karena Coment adalah hanya berupa teknik-teknik khusus agar Real-time traffic lebih efisien, maka Comet dapat di implementasi disemua platform pemrograman. Teknik lain yang serupa dengan Comet diantaranya ReverseAjax dan PiggyBack namun Comet lebih unggul secara teknis. 

Gambar Implementasi Gabungan ReverseAjax + Comet 

Img : IBM

Bahasan selanjutnya akan membahas tentang 2 tipe protokol komunikasi http dan https yang sangat penting kita ketahui. Nah simak artikel Perbedaan HTTP dan HTTPS