Ana içeriğe geç

SSS

Here is a list of common questions about Socket.IO:

Bir şey düzgün çalışmıyor, lütfen yardım edin?

Lütfen Sorun Giderme kılavuzunu kontrol edin.

Arkada nasıl çalışıyor?

Socket.IO bağlantısı, farklı düşük seviyeli taşıma yöntemleri ile kurulabilir:

Socket.IO, en iyi mevcut seçeneği otomatik olarak seçecektir, buna bağlı olarak:

  • tarayıcının yetenekleri (bakınız burada ve burada)
  • ağ (bazı ağlar WebSocket ve/veya WebTransport bağlantılarını engeller)

Bununla ilgili daha fazla detayı "Nasıl çalıştığı" bölümünde bulabilirsiniz.

Socket.IO'nun WebSocket üzerinde sağladığı özellikler nelerdir?

WebSocket'lar harika! Gerçekten. Müşteri ve sunucu arasında veri aktarımı için verimli bir yol sağlarlar. Avantajlarından bazıları:

  • sunucudan veri almak için periyodik anket yapmaya ihtiyaç duymazsınız
  • verileri sunucuya göndermek için tüm HTTP başlıklarını tekrar tekrar göndermeniz gerekmez

Bu da onları oyunlar, sohbetler, işbirlikçi çözümler gibi düşük gecikme süresine ve veri yoğun uygulamalar için mükemmel hale getirir...

Bununla birlikte, WebSocket'lar da oldukça düşük seviyelidir ve gerçek zamanlı uygulamalar geliştirmek sıklıkla onların üzerine ek bir katman gerektirir:

  • WebSocket bağlantısı kurulamazsa, HTTP uzun süreli anket yöntemine geçiş
  • WebSocket bağlantısı kapandığında otomatik yeniden bağlantı
  • bazı verileri göndermek ve karşı taraftan yanıt almak için onaylar
  • tüm bağlı istemcilere veya bir alt kümesine yayın yapma
  • sunucu örneklerini çoğaltma
  • kısa süreli bağlantı kesilmesi için bağlantı kurtarma

Tahmin edebileceğiniz gibi, bu ek katman Socket.IO kütüphanesi tarafından uygulanmaktadır.

WebTransport nedir?

Kısacası, WebTransport WebSocket'a alternatif bir yöntemdir ve WebSocket'ları etkileyen baş sıra engellemesi gibi çeşitli performans sorunlarını çözer.

Bu yeni web API'si hakkında daha fazla bilgi isterseniz (Ocak 2022'de Chrome'a ve Haziran 2023'te Firefox'a dahil edildi), lütfen bu bağlantılara göz atın:

not

Socket.IO'da WebTransport desteği varsayılan olarak etkin değildir, çünkü güvenli bir bağlam (HTTPS) gerektirir. WebTransport ile oynamak istiyorsanız lütfen özgü eğitimi kontrol edin.

Socket.IO mesajları saklar mı?

Socket.IO sunucusu herhangi bir mesaj saklamaz.

Bağlı olmayan istemciler için bu mesajları bir yere kalıcı olarak saklamak uygulamanızın sorumluluğundadır.

ipucu

Bununla birlikte, Socket.IO, Bağlantı durumu kurtarma özelliğini etkinleştirirseniz mesajları kısa bir süre saklayacaktır.

Socket.IO'nun teslimat garantileri nelerdir?

Socket.IO mesaj sıralamasını garanti eder, hangi düşük seviyeli taşıma yöntemi kullanıldığına bakılmaksızın (iki taşıma arasında geçiş yapıldığında bile).

Ayrıca, varsayılan olarak Socket.IO, en fazla bir kez teslimat garantisi sağlar (aynı zamanda "gönder ve unut" olarak da bilinir), bu da belirli koşullar altında bir mesajın kaybolabileceği ve tekrar deneme yapılmayacağı anlamına gelir.

Daha fazla bilgi burada bulunmaktadır.

Belirli bir kullanıcıyı nasıl tanımlayabilirim?

Socket.IO'da kullanıcı kavramı yoktur.

Verilen bir Socket.IO bağlantısını bir kullanıcı hesabına bağlamak uygulamanızın sorumluluğundadır.

Node.js uygulamaları için örneğin:

  • Passport tarafından sağlanan kullanıcı bağlamını yeniden kullanabilirsiniz (bu eğitime göz atın)
  • veya istemci tarafında kullanıcı kimlik bilgilerini göndermek ve bunları middleware içinde doğrulamak için auth seçeneğini kullanabilirsiniz.

Değişiklik günlüğünü nerede bulabilirim?

Lütfen buraya bakın.