Notifikasi langsung adalah tempat Websockets berkembang dan memberikan keuntungan besar dibandingkan AJAX.
Seperti yang Anda ketahui, ini sudah dibahas sebelumnya saat memperdebatkan peran AJAX (bagus untuk CRUD, tidak begitu banyak saat polling) dan ketika membandingkan Kinerja soket web vs. kinerja AJAX (Soket web selalu lebih cepat dalam hal pembaruan langsung).
Ya... Anda dapat menghemat sumber daya dan meningkatkan kinerja (serta masalah pemeliharaan kode di masa mendatang) dengan menambahkan on_update
"mengaitkan" ke titik akses database.
Idenya sederhana:setiap kali panggilan fungsi memperbarui database MySQL, permintaan pembaruan juga dikirim ke panggilan balik. Panggilan balik tersebut bertanggung jawab untuk memublikasikan pembaruan ke saluran yang benar.
Dengan cara ini, Anda tidak melakukan polling database MySQL.
Beberapa database menawarkan panggilan balik pembaruan dan yang lainnya tidak. Saya pikir MySQL tidak. Namun, saya menghindari panggilan balik yang ditautkan ke basis data ini karena ini khusus untuk basis data. Lebih baik (IMHO) untuk menambahkan panggilan balik ke titik akses database di aplikasi, jadi mengganti database tidak mempengaruhi basis kode.
Saya tidak berpikir AJAX adalah pendekatan yang baik.
HTTP/2 membantu mengurangi kekurangan AJAX, tetapi tidak menyelesaikan semuanya.
Saya tidak tahu berapa banyak klien yang Anda harapkan untuk terhubung secara bersamaan, tetapi memaksa klien untuk mengirim permintaan setiap satu atau dua detik sangat dekat dengan serangan DoS yang ditimbulkan sendiri.
Pertimbangkan ini:jika klien mengirim permintaan AJAX setiap dua detik, daripada pada 2.000 klien bersamaan, server Anda perlu merespons 1.000 permintaan/detik - ini termasuk otentikasi, kueri basis data, dan semua jazz itu.
Di sisi lain, dengan menggunakan Websockets, dengan 2.000 klien yang terhubung, Anda memiliki 2.000 koneksi terus-menerus yang tidak melakukan apa-apa hingga sebuah pesan tiba. Tidak ada CPU atau pekerjaan yang diperlukan, hanya memori koneksi. Tidak ada tekanan pada server sampai data aktual didorong.
Ya, mereka lebih rumit untuk diterapkan, tetapi tidak terlalu sulit begitu Anda mulai. Selain itu, ada banyak perpustakaan dan alat bantu yang mengambil banyak pekerjaan dari pundak Anda.
Masalah umum yang terkait dengan pendekatan Websocket termasuk penanganan penskalaan horizontal (seringkali dengan menambahkan pub/sub database atau layanan, seperti Redis), pemesanan pesan (yang lebih baik diabaikan jika memungkinkan) dan masalah propagasi data (kapan kita menandai data sebagai "terlihat"? apakah kami mengirim seluruh data atau hanya pemberitahuan yang menyatakan bahwa data tersedia? berapa banyak saluran yang kami gunakan dan bagaimana kami membagi langganan?).
Biasanya jawabannya adalah spesifik aplikasi dan bergantung pada fitur yang Anda coba buka gulungannya serta ukuran yang diharapkan dari kumpulan data Anda (jika setiap jawaban yang saya berikan pada SO adalah saluran, itu tidak realistis untuk dipertahankan).
Pokoknya... Semoga Sukses!