0Pricing
JavaScript Academy · Ders

Bağlantı Yaşam Döngüsü ve Hatalar

Açılma, kapanma ve hata olaylarını yönetin.

Bağlantı Yaşam Döngüsü ve Hatalar, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 4 dersten oluşur.

Tam Yaşam Döngüsü

Bir socket şu durumlardan geçer: CONNECTING → OPEN → CLOSING → CLOSED. Dört olay bu geçişlere karşılık gelir: open, message, error ve close.

onclose Olayı

Bağlantı düzgün biçimde veya beklenmedik şekilde sona erdiğinde onclose tetiklenir. Olay, code, reason ve wasClean değerlerini taşır.

socket.onclose = (event) => {
  console.log("Closed", event.code, event.reason, event.wasClean);
};

Kapatma Kodları

Standart kodlar arasında 1000 (normal), 1001 (ayrılıyor), 1006 (anormal, kapatma karesi yok) ve 1011 (sunucu hatası) bulunur. 4000–4999 arasındaki kodlar uygulama tarafından tanımlanır.

socket.onclose = (e) => {
  if (e.code === 1000) console.log("normal close");
  else console.log("unexpected", e.code);
};

Bilerek Kapatma

socket.close(code, reason), düzgün bir kapatma başlatır. Normal bir kapatma için 1000 kullanın; reason dizesi 123 bayttan kısa olmalıdır.

socket.close(1000, "user logged out");

onerror Olayı

Başarısızlıklar olduğunda onerror tetiklenir. Güvenlik nedeniyle hata olayı bilerek sınırlı tutulur; ayrıntılı bir neden taşımaz. Ardından neredeyse her zaman bir close olayı gelir.

socket.onerror = (event) => {
  console.log("Socket error — a close will follow");
};

Düzgün ve Anormal Kapatmayı Ayırt Etme

event.wasClean yalnızca her iki taraf da kapatma karelerini değiş tokuş ettiğinde true olur. Ağ bağlantısının kopması, wasClean: false ve 1006 kodunu verir.

socket.onclose = (e) => {
  if (!e.wasClean) console.log("Connection dropped unexpectedly");
};

Kaynakları Temizleme

Kapatma sırasında zamanlayıcıları (kalp atışlarını) temizleyin, bekleyen istekleri reddedin ve uygulamanın bağlantı kopmasını yansıtması için arayüz durumunu güncelleyin.

socket.onclose = () => {
  clearInterval(heartbeatTimer);
  pending.forEach((reject) => reject(new Error("disconnected")));
  pending.clear();
};

Dinleyicileri Kaldırma

İşleyicileri addEventListener ile eklediyseniz, özellikle socket'leri yeniden oluştururken bellek sızıntılarını önlemek için kapatma sırasında bunları kaldırın.

function cleanup() {
  socket.removeEventListener("message", onMessage);
  socket.removeEventListener("close", onClose);
}

Kapatma Sırasında readyState

close() çağrısı ile onclose olayı arasındaki sürede readyState değeri CLOSING (2) olur. Bu aralıkta yapılan gönderimler yok sayılır.

socket.close();
console.log(socket.readyState); // 2 (CLOSING)

Sunuculardan Gelen Boşta Kalma Zaman Aşımları

Sunucular ve ara sunucular, boşta kalan bağlantıları genellikle 30–60 saniye sonra kapatır. Kalp atışları bağlantıyı etkin tutar ve kopmaları hızlıca algılamanızı sağlar.

Kopmuş Bağlantıyı Algılama

Kalp atışlarını bir izleyiciyle birleştirin: belirli bir süre içinde pong gelmezse socket'i kopmuş kabul edin ve yeniden bağlanmayı tetiklemek için kapatın.

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);
};

Kısa Kontrol

Yaşam döngüsü yönetimini sınayın.

Özet: Yaşam Döngüsü ve Hatalar

onclose olayını code/reason/wasClean değerleriyle yönettiniz, standart kapatma kodlarını öğrendiniz, bağlantıyı bilerek kapattınız, ayrıntıları sınırlı olan onerror olayını ele aldınız, zamanlayıcıları ve dinleyicileri temizlediniz ve bir kalp atışı izleyicisi oluşturdunuz. Sırada yeniden bağlanma stratejileri var.

Sıkça Sorulan Sorular

“Bağlantı Yaşam Döngüsü ve Hatalar” dersi ücretsiz mi?

Evet — “Bağlantı Yaşam Döngüsü ve Hatalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 4 dersten oluşur.

“Bağlantı Yaşam Döngüsü ve Hatalar” dersinde ne öğreneceğim?

Açılma, kapanma ve hata olaylarını yönetin. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Bağlantı Yaşam Döngüsü ve Hatalar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. WebSocket Bağlantısı Açma
  2. Mesaj Gönderme ve Alma
  3. Bağlantı Yaşam Döngüsü ve Hatalar
  4. Yeniden Bağlanma Stratejileri
← JavaScript Academy Sayfasına Dön