Pengakuan Mesej dan Jaminan Penghantaran
Pastikan mesej tidak hilang secara senyap dengan menambah pengakuan, percubaan semula dan idempoten untuk mencapai jaminan penghantaran yang boleh dipercayai.
Pengakuan Mesej dan Jaminan Penghantaran ialah pelajaran Pengaturcaraan WebSockets dan Sistem Masa Nyata percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengaturcaraan WebSockets dan Sistem Masa Nyata, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengaturcaraan WebSockets dan Sistem Masa Nyata merangkumi sejumlah 4 pelajaran.
Mesej Boleh Hilang
Mesej boleh hilang jika soket terputus semasa penghantaran, pelayan ranap, atau client dimuatkan semula sebelum memproses mesej tersebut. Tanpa pengesahan penerimaan, kedua-dua pihak tidak tahu bahawa perkara itu berlaku.
Tahap Jaminan Penghantaran
Tiga jaminan yang biasa:
- Paling banyak sekali: mungkin hilang, tidak pernah diduplikasi
- Sekurang-kurangnya sekali: tidak pernah hilang, mungkin diduplikasi
- Tepat sekali: tidak pernah hilang dan tidak pernah diduplikasi, tetapi paling sukar
Pengesahan pada Tahap Aplikasi
WebSockets hanya mengesahkan penghantaran pengangkutan, bukan pemprosesan. Untuk mengetahui bahawa mesej telah dikendalikan, penerima mesti menghantar pengesahan yang jelas kembali.
Menambahkan Id Mesej
Tag setiap mesej dengan id unik supaya pengesahan boleh merujuk kepadanya.
const msg = { id: crypto.randomUUID(), type: 'order', data };
ws.send(JSON.stringify(msg));Menghantar Pengesahan
Penerima membalas dengan pengesahan yang membawa id asal setelah mesej diproses dengan selamat.
ws.send(JSON.stringify({ type: 'ack', id: msg.id }));Menjejak Mesej yang Belum Disahkan
Penghantar menyimpan peta mesej yang sedang diproses sehingga pengesahannya tiba.
const pending = new Map();
pending.set(msg.id, msg);Mencuba Semula Selepas Tamat Masa
Jika tiada pengesahan tiba dalam tempoh tamat masa, hantar semula mesej tersebut. Beginilah penghantaran sekurang-kurangnya sekali dicapai.
setTimeout(() => {
if (pending.has(msg.id)) ws.send(JSON.stringify(msg));
}, 3000);Masalah Pendua
Percubaan semula boleh menghantar mesej yang sama dua kali, contohnya apabila pengesahan hilang dan bukannya mesej. Oleh itu, penghantaran sekurang-kurangnya sekali bermaksud penerima mungkin melihat pendua.
Idempotensi sebagai Penyelesaian
Jadikan pemprosesan idempoten: mengendalikan id yang sama dua kali memberikan kesan yang sama seperti mengendalikannya sekali. Jejaki id yang telah dilihat dan abaikan pengulangan.
const seen = new Set();
if (seen.has(msg.id)) return;
seen.add(msg.id);
process(msg);Menghampiri Tepat Sekali
Tepat sekali yang sebenar tidak boleh dijamin dari hujung ke hujung, tetapi penghantaran sekurang-kurangnya sekali bersama pengendalian idempoten memberikan hasil praktikal yang sama, dan inilah yang digunakan oleh kebanyakan sistem.
Amalan Terbaik
Bina penghantaran yang boleh dipercayai:
- Tag mesej dengan id unik
- Wajibkan pengesahan pada tahap aplikasi
- Cuba semula mesej yang belum disahkan selepas tamat masa
- Jadikan pemprosesan idempoten untuk menyerap pendua
Semakan Pantas
Uji pengetahuan anda tentang penghantaran.
Imbas Kembali
Anda telah menambahkan jaminan penghantaran pada pemesejan masa nyata:
- Fahami penghantaran paling banyak sekali, sekurang-kurangnya sekali dan tepat sekali
- Gunakan id mesej dan pengesahan pada tahap aplikasi
- Cuba semula mesej yang belum disahkan
- Gabungkan penghantaran sekurang-kurangnya sekali dengan idempotensi
Sistem anda tidak lagi kehilangan mesej secara senyap.
Pelajari Pengaturcaraan WebSockets dan Sistem Masa Nyata dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 12
- Pelajaran
- 47
Soalan Lazim
Adakah pelajaran “Pengakuan Mesej dan Jaminan Penghantaran” percuma?
Ya — teks penuh “Pengakuan Mesej dan Jaminan Penghantaran” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Pengaturcaraan WebSockets dan Sistem Masa Nyata, tingkat taraf kepada CoddyKit PRO. Kursus Pengaturcaraan WebSockets dan Sistem Masa Nyata merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengakuan Mesej dan Jaminan Penghantaran”?
Pastikan mesej tidak hilang secara senyap dengan menambah pengakuan, percubaan semula dan idempoten untuk mencapai jaminan penghantaran yang boleh dipercayai. Anda berlatih Pengaturcaraan WebSockets dan Sistem Masa Nyata menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Pengaturcaraan WebSockets dan Sistem Masa Nyata?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengaturcaraan WebSockets dan Sistem Masa Nyata di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Pengakuan Mesej dan Jaminan Penghantaran” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengaturcaraan WebSockets dan Sistem Masa Nyata ini?
Ya. Setiap pelajaran Pengaturcaraan WebSockets dan Sistem Masa Nyata menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengendalikan Pemutusan dan Penyambungan Semula
- Penyebaran dan Pemulihan Ralat yang Kukuh
- Denyutan dan Kekal Hidup
- Pengakuan Mesej dan Jaminan Penghantaran