WebSockets jelas merupakan masa depan.
Polling panjang adalah solusi kotor untuk mencegah membuat koneksi untuk setiap permintaan seperti yang dilakukan AJAX - tetapi polling panjang dibuat ketika WebSockets tidak ada. Sekarang karena WebSockets, pemungutan suara lama akan hilang.
WebRTC memungkinkan komunikasi peer-to-peer.
Saya merekomendasikan belajar WebSockets .
Perbandingan:
berbagai teknik komunikasi di web
AJAX - request
→ response
. Membuat koneksi ke server, mengirimkan header permintaan dengan data opsional, mendapat respons dari server, dan menutup koneksi.
Didukung di semua browser utama.
Polling panjang - request
→ wait
→ response
. Membuat koneksi ke server seperti yang dilakukan AJAX, tetapi mempertahankan koneksi tetap-hidup terbuka untuk beberapa waktu (tidak lama). Selama koneksi, klien terbuka dapat menerima data dari server. Klien harus menyambung kembali secara berkala setelah koneksi ditutup, karena batas waktu atau data. Di sisi server masih diperlakukan seperti permintaan HTTP, sama seperti AJAX, kecuali jawaban atas permintaan akan terjadi sekarang atau beberapa waktu di masa depan, yang ditentukan oleh logika aplikasi.
grafik dukungan (lengkap) | wikipedia
WebSockets - client
↔ server
. Buat koneksi TCP ke server, dan tetap buka selama diperlukan. Server atau klien dapat dengan mudah menutup koneksi. Klien melewati proses handshake yang kompatibel dengan HTTP. Jika berhasil, maka server dan klien dapat bertukar data di kedua arah kapan saja. Ini efisien jika aplikasi membutuhkan pertukaran data yang sering dalam kedua cara. WebSockets memiliki framing data yang mencakup masking untuk setiap pesan yang dikirim dari klien ke server, sehingga data hanya dienkripsi.
grafik dukungan (sangat bagus) | wikipedia
WebRTC - peer
↔ peer
. Transport untuk menjalin komunikasi antara klien dan transport-agnostik, sehingga dapat menggunakan UDP, TCP atau bahkan lebih banyak layer abstrak. Ini umumnya digunakan untuk transfer data volume tinggi, seperti streaming video / audio, di mana keandalannya bersifat sekunder dan beberapa bingkai atau pengurangan perkembangan kualitas dapat dikorbankan demi waktu respons dan, setidaknya, beberapa transfer data. Kedua belah pihak (peer) dapat mendorong data satu sama lain secara mandiri. Meskipun dapat digunakan sepenuhnya independen dari server terpusat, masih memerlukan beberapa cara untuk bertukar data endpoint, di mana dalam banyak kasus pengembang masih menggunakan server terpusat untuk "menghubungkan" rekan-rekan. Ini diperlukan hanya untuk bertukar data penting untuk membangun koneksi, setelah itu server terpusat tidak diperlukan.
grafik dukungan (sedang) | wikipedia
Acara yang Dikirim Server - client
← server
. Klien membuat koneksi gigih dan jangka panjang ke server. Hanya server yang dapat mengirim data ke klien. Jika klien ingin mengirim data ke server, itu akan memerlukan penggunaan teknologi / protokol lain untuk melakukannya. Protokol ini kompatibel dengan HTTP dan mudah diterapkan di sebagian besar platform sisi server. Ini adalah protokol yang lebih disukai untuk digunakan daripada Polling Panjang. grafik dukungan (baik, kecuali IE) | wikipedia
Keuntungan:
Keuntungan utama dari sisi server WebSockets , adalah bahwa itu bukan permintaan HTTP (setelah jabat tangan), tetapi protokol komunikasi berbasis pesan yang tepat. Ini memungkinkan Anda untuk mencapai kinerja besar dan keunggulan arsitektur . Misalnya, di node.js, Anda dapat berbagi memori yang sama untuk koneksi soket yang berbeda, sehingga masing-masing dapat mengakses variabel bersama. Oleh karena itu, Anda tidak perlu menggunakan database sebagai titik pertukaran di tengah (seperti dengan AJAX atau Polling Panjang dengan bahasa seperti PHP). Anda dapat menyimpan data dalam RAM, atau bahkan menerbitkan ulang antar soket dengan segera.
Pertimbangan keamanan
Orang-orang sering khawatir tentang keamanan WebSockets. Kenyataannya adalah itu membuat sedikit perbedaan atau bahkan menempatkan WebSockets sebagai opsi yang lebih baik. Pertama-tama, dengan AJAX, ada kemungkinan MITM lebih tinggi , karena setiap permintaan adalah koneksi TCP baru yang melintasi melalui infrastruktur internet. Dengan WebSockets, begitu terhubung, jauh lebih sulit untuk menyadap di antara keduanya, dengan tambahan masking yang ditegakkan ketika data dialirkan dari klien ke server serta kompresi tambahan, yang membutuhkan lebih banyak upaya untuk menyelidiki data. Semua protokol modern mendukung: HTTP dan HTTPS (terenkripsi).
PS
Ingatlah bahwa WebSockets umumnya memiliki pendekatan logika yang sangat berbeda untuk jaringan , lebih seperti game real-time selama ini, dan tidak seperti http.
Salah satu teknologi penantang yang Anda hilangkan adalah Server-Sent Events / Sumber Acara. Apa itu Polling Panjang, Websockets, Server-Sent Events (SSE) dan Comet? memiliki diskusi yang baik tentang semua ini. Perlu diingat bahwa beberapa di antaranya lebih mudah diintegrasikan dengan yang lain di sisi server.
sumber
Untuk aplikasi obrolan atau aplikasi lain yang terus-menerus berkomunikasi dengan server,
WebSockets
adalah opsi terbaik. Namun, Anda hanya dapat menggunakanWebSockets
dengan server yang mendukungnya, sehingga dapat membatasi kemampuan Anda untuk menggunakannya jika Anda tidak dapat menginstal pustaka yang diperlukan. Dalam hal ini, Anda harus menggunakanLong Polling
untuk mendapatkan fungsionalitas serupa.sumber
Polling XHR Permintaan dijawab ketika acara terjadi (bisa langsung, atau setelah penundaan). Permintaan selanjutnya perlu dibuat untuk menerima acara lebih lanjut.
Server Terkirim Acara Klien mengirimkan permintaan ke server. Server mengirim data baru ke halaman web kapan saja.
WebSockets Setelah jabat tangan awal (melalui protokol HTTP). Komunikasi dilakukan dua arah menggunakan protokol WebSocket.
sumber