Kitar Hayat dan Error Sambungan
Kendalikan peristiwa buka, tutup dan error.
Kitar Hayat dan Error Sambungan ialah pelajaran Akademi JavaScript percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi JavaScript, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Kitar Hayat Penuh
Socket bergerak melalui CONNECTING → OPEN → CLOSING → CLOSED. Empat peristiwa sepadan dengan peralihan ini: open, message, error dan close.
Peristiwa onclose
onclose dicetuskan apabila sambungan berakhir, sama ada secara bersih atau tidak. Peristiwa itu membawa code, reason dan wasClean.
socket.onclose = (event) => {
console.log("Closed", event.code, event.reason, event.wasClean);
};Kod Penutupan
Kod standard termasuk 1000 (biasa), 1001 (beredar), 1006 (tidak normal, tanpa bingkai penutupan) dan 1011 (ralat pelayan). Kod 4000–4999 ditakrifkan oleh aplikasi.
socket.onclose = (e) => {
if (e.code === 1000) console.log("normal close");
else console.log("unexpected", e.code);
};Menutup dengan Sengaja
socket.close(code, reason) memulakan penutupan secara teratur. Gunakan 1000 untuk penutupan biasa; rentetan sebab mestilah kurang daripada 123 bytes.
socket.close(1000, "user logged out");Peristiwa onerror
onerror dicetuskan apabila berlaku kegagalan. Atas sebab keselamatan, peristiwa ralat ini sengaja memberikan maklumat yang sangat terhad — tiada sebab terperinci dibawanya. Peristiwa close hampir selalu menyusul.
socket.onerror = (event) => {
console.log("Socket error — a close will follow");
};Membezakan Penutupan Bersih dan Tidak Normal
event.wasClean ialah true hanya apabila kedua-dua pihak bertukar bingkai penutupan. Rangkaian yang terputus memberikan wasClean: false dan kod 1006.
socket.onclose = (e) => {
if (!e.wasClean) console.log("Connection dropped unexpectedly");
};Membersihkan Sumber
Apabila ditutup, clear pemasa (denyutan jantung), tolak permintaan pending dan kemas kini keadaan UI supaya aplikasi mencerminkan pemutusan sambungan.
socket.onclose = () => {
clearInterval(heartbeatTimer);
pending.forEach((reject) => reject(new Error("disconnected")));
pending.clear();
};Mengalih Keluar Pengendali
Jika anda melampirkan pengendali dengan addEventListener, gunakan remove padanya apabila ditutup untuk mengelakkan kebocoran, khususnya apabila mencipta semula socket.
function cleanup() {
socket.removeEventListener("message", onMessage);
socket.removeEventListener("close", onClose);
}readyState Semasa Penutupan
Antara panggilan close() dengan peristiwa onclose, readyState ialah CLOSING (2). Penghantaran dalam tempoh ini diabaikan.
socket.close();
console.log(socket.readyState); // 2 (CLOSING)Had Masa Tidak Aktif daripada Pelayan
Pelayan dan proksi sering menutup sambungan yang tidak aktif selepas 30–60 saat. Denyutan jantung memastikan sambungan kekal aktif dan membolehkan anda mengesan pemutusan dengan segera.
Mengesan Sambungan yang Terputus
Gabungkan denyutan jantung dengan pengawas: jika tiada pong tiba dalam suatu tempoh, anggap socket telah terputus dan lakukan close padanya untuk mencetuskan penyambungan semula.
let pongTimer;
function ping() {
socket.send(JSON.stringify({ type: "ping" }));
pongTimer = setTimeout(() => socket.close(4000, "no pong"), 5000);
}
socket.onmessage = (e) => {
if (JSON.parse(e.data).type === "pong") clearTimeout(pongTimer);
};Semakan Pantas
Uji pengendalian kitar hayat.
Ringkasan: Kitar Hayat dan Ralat
Anda mengendalikan onclose bersama code/reason/wasClean, mempelajari kod penutupan standard, menutup sambungan dengan sengaja, mengurus onerror yang terhad, membersihkan pemasa dan pengendali serta membina pengawas denyutan jantung. Seterusnya: strategi penyambungan semula.
Pelajari JavaScript 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
- 59
- Pelajaran
- 200
Soalan Lazim
Adakah pelajaran “Kitar Hayat dan Error Sambungan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Akademi JavaScript, termasuk “Kitar Hayat dan Error Sambungan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Akademi JavaScript merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Kitar Hayat dan Error Sambungan”?
Kendalikan peristiwa buka, tutup dan error. Anda berlatih Akademi JavaScript 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 Akademi JavaScript?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi JavaScript 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 3 daripada 4.
Berapa lamakah pelajaran “Kitar Hayat dan Error Sambungan” 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 Akademi JavaScript ini?
Ya. Setiap pelajaran Akademi JavaScript 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
- Membuka Sambungan WebSocket
- Menghantar dan Menerima Mesej
- Kitar Hayat dan Error Sambungan
- Strategi Penyambungan Semula