Pengaturcaraan WebSockets dan Sistem Masa Nyata · Pelajaran

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.

Pelajaran 4 daripada 413 langkah

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.

Percuma untuk bermula

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

  1. Mengendalikan Pemutusan dan Penyambungan Semula
  2. Penyebaran dan Pemulihan Ralat yang Kukuh
  3. Denyutan dan Kekal Hidup
  4. Pengakuan Mesej dan Jaminan Penghantaran
← Kembali ke Pengaturcaraan WebSockets dan Sistem Masa Nyata