Bazı uygulamaların, sayfayı yenilemenize veya bir düğmeye tıklamanıza gerek kalmadan verilerini gerçek zamanlı olarak nasıl güncelleyebildiğini hiç merak ettiniz mi?
Bu blog yazısında, WebSocket'in ne olduğunu, nasıl çalıştığını ve JavaScript ile nasıl kullanılacağını açıklayacağız. Ayrıca, API'lerinizi test etmek ve hatalarını ayıklamak için Apidog'u nasıl kullanacağınızı da göstereceğiz.
WebSockets'e Giriş
WebSockets, bir istemci ve bir sunucu arasındaki gerçek zamanlı iletişim için güçlü bir araçtır. Çift yönlü iletişime izin verirler, bu da verilerin aynı anda gönderilip alınabileceği anlamına gelir. Bu, her veri parçası için yeni bir istek yapmayı gerektiren tek yönlü olan geleneksel HTTP isteklerinin aksinedir.
WebSockets, geleneksel HTTP tabanlı iletişim yöntemlerinden daha hızlı ve daha verimlidir. Düşük gecikme süresi, çift yönlü iletişim, ölçeklenebilirlik ve gerçek zamanlı veri akışı desteği sunarlar. WebSockets, aynı anda yalnızca bir yapılandırılmış veri akışına izin veren HTTP/1.1'in aksine, tek bir bağlantı üzerinden birden fazla veri akışını işleyebilir.
WebSockets Nasıl Çalışır?
WebSocket, bir el sıkışma kullanarak istemci ve sunucu arasında bir bağlantı kurarak çalışır. El sıkışma, istemcinin bir yükseltme isteği gönderdiği ve sunucunun bir yükseltme yanıtı ile yanıt verdiği HTTP kullanılarak yapılır. Yükseltme isteği ve yanıtı, istemci ve sunucunun HTTP'den WebSocket'e geçmek istediğini gösteren bazı özel başlıklar içerir.

El sıkışma tamamlandıktan sonra, bağlantı WebSocket'e yükseltilir ve istemci ve sunucu mesaj alışverişinde bulunabilir. Mesajlar, HTTP'den daha verimli ve daha hızlı olan bir ikili format kullanılarak gönderilir ve alınır. Mesajlar metin veya ikili olabilir ve herhangi bir boyutta ve içerikte olabilir.
Bağlantı, istemci veya sunucu onu kapatana kadar canlı tutulur. İstemci veya sunucu, iletişimin sonunu gösteren özel bir mesaj türü olan bir kapatma çerçevesi göndererek bağlantıyı kapatabilir. Kapatma çerçevesi ayrıca, bağlantının neden kapatıldığını açıklayan bir neden kodu ve bir mesaj da içerebilir.
WebSockets Kullanmanın Faydaları
WebSockets, web istemcileri ve web sunucuları arasında sürekli, çift yönlü ve düşük gecikmeli iletişim sağlayan bir teknolojidir. WebSockets kullanmanın bazı faydaları şunlardır:
- Her mesaja istek/yanıt döngüsü kullanan ve başlıklar, çerezler vb. ekleyen HTTP'ye kıyasla veri iletim yükünü azaltırlar.
- Çok sayıda kitaplık, çerçeve ve tarayıcı tarafından yaygın olarak benimsenir ve desteklenirler, bu da onları kullanımı ve entegrasyonu kolaylaştırır.
- Esnektirler ve pub/sub mesajlaşma gibi uygulama düzeyi protokollerin ve uzantıların uygulanmasına izin verirler.
- Olay odaklıdırlar ve sunucunun, yoklama yapmaya gerek kalmadan, verileri kullanılabilir olur olmaz istemciye göndermesine izin verirler. Bu, sohbet odaları veya borsa güncellemeleri gibi olaylara hızlı tepki vermesi gereken gerçek zamanlı uygulamalar için kullanışlıdır.
- Tam çift yönlüdürler ve hem sunucunun hem de istemcinin aynı anda veri göndermesine izin vererek, iki yönlü, çok kullanıcılı iletişimi sağlar.
JavaScript ile WebSocket Nasıl Kullanılır
JavaScript ile WebSocket, web için en popüler betik dili olan JavaScript ile kullanımı çok kolaydır. JavaScript, WebSocket bağlantıları oluşturmak ve yönetmek için basit ve sezgisel bir API sağlayan WebSocket
adlı yerleşik bir nesneye sahiptir.
JavaScript ile WebSocket kullanmak için, sunucunun URL'si ile bir WebSocket nesnesi oluşturmanız ve ardından open
, message
, close
ve error
gibi olayları dinlemeniz gerekir. Ayrıca, send
yöntemini kullanarak sunucuya veri gönderebilirsiniz. İşte JavaScript ile WebSocket'in nasıl kullanılacağına dair basit bir örnek:
// Sunucu URL'si ile bir WebSocket nesnesi oluşturun
const socket = new WebSocket("ws://localhost:3000");
// Bağlantının kurulduğunu gösteren açık olayı dinleyin
socket.onopen = () => {
console.log("WebSocket bağlantısı açıldı");
// Sunucuya bir mesaj gönderin
socket.send("Tarayıcıdan Merhaba!");
};
// Sunucudan alınan verileri içeren mesaj olayını dinleyin
socket.onmessage = (event) => {
console.log("Sunucudan gelen mesaj:", event.data);
};
// Bağlantının kapandığını gösteren kapatma olayını dinleyin
socket.onclose = (event) => {
console.log("WebSocket bağlantısı kapandı");
};
// Bağlantıda bir hata olduğunu gösteren hata olayını dinleyin
socket.onerror = (error) => {
console.error("WebSocket hatası:", error);
};
Kod, bir sunucuya bir WebSocket bağlantısı oluşturmak ve yönetmek ve ayrıca bağlantı üzerinden veri göndermek ve almak için WebSocket API'sini kullanır. İşte kodun satır satır dökümü:
// Sunucu URL'si ile bir WebSocket nesnesi oluşturun
const socket = new WebSocket("ws://localhost:3000");
Bu satır, WebSocket protokolünü destekleyen sunucunun URL'si ile yeni bir WebSocket nesnesi oluşturur. URL, güvenli bağlantılar için ws://
veya wss://
ile başlar.
// Bağlantının kurulduğunu gösteren açık olayı dinleyin
socket.onopen = () => {
console.log("WebSocket bağlantısı açıldı");
// Sunucuya bir mesaj gönderin
socket.send("Tarayıcıdan Merhaba!");
};
Bu kod bloğu, WebSocket nesnesinde open
olayı tetiklendiğinde yürütülecek bir işlev tanımlar. open
olayı, tarayıcı ve sunucu arasındaki bağlantının başarıyla kurulduğunu gösterir. İşlev, konsola bir mesaj kaydeder ve ardından WebSocket nesnesinin send
yöntemini kullanarak sunucuya bir mesaj gönderir.
// Sunucudan alınan verileri içeren mesaj olayını dinleyin
socket.onmessage = (event) => {
console.log("Sunucudan gelen mesaj:", event.data);
};
Bu kod bloğu, WebSocket nesnesinde message
olayı tetiklendiğinde yürütülecek bir işlev tanımlar. message
olayı, sunucudan event.data
özelliğinde alınan verileri içerir. İşlev, verileri konsola kaydeder.
// Bağlantının kapandığını gösteren kapatma olayını dinleyin
socket.onclose = (event) => {
console.log("WebSocket bağlantısı kapandı");
};
Bu kod bloğu, WebSocket nesnesinde close
olayı tetiklendiğinde yürütülecek bir işlev tanımlar. close
olayı, tarayıcı ve sunucu arasındaki bağlantının kapandığını gösterir. İşlev, konsola bir mesaj kaydeder.
// Bağlantıda bir hata olduğunu gösteren hata olayını dinleyin
socket.onerror = (error) => {
console.error("WebSocket hatası:", error);
};
Bu kod bloğu, WebSocket nesnesinde error
olayı tetiklendiğinde yürütülecek bir işlev tanımlar. error
olayı, bazı verilerin gönderilememesi veya alınamaması gibi bağlantıda bir hata olduğunu gösterir. İşlev, hatayı konsola kaydeder.
JavaScript WebSocket'in Hata Ayıklaması İçin Apidog Nasıl Kullanılır?
WebSockets'in hata ayıklaması, kalıcı bir bağlantı kullandıkları için zorlayıcı olabilir. Ancak, WebSocket kodunuzun hata ayıklamanıza yardımcı olabilecek çeşitli araçlar mevcuttur. Bu araçlardan biri, hepsi bir arada bir işbirliğine dayalı API geliştirme platformu olan Apidog'dur. Apidog ile etkili hata ayıklama tekniklerini öğrenebilir, hata ayıklama ortamınızı kurabilir ve kesintisiz bir hata ayıklama deneyimi için gelişmiş araçlardan yararlanabilirsiniz.
İşte Apidog'u bir WebSocket istemcisinin hata ayıklaması için nasıl kullanabileceğiniz:
- Apidog'u Açın: İlk olarak, Apidog uygulamasını başlatın ve sol taraftaki "+" düğmesine tıklayın, yeni bir açılır menü açılacaktır. Oradan "Yeni WebSocket API'si"ni seçin:

2. Bir Bağlantı Kurun: WebSocket API URL'sini Apidog'un adres çubuğuna girerek başlayın. Ardından, el sıkışma işlemini başlatmak ve bir bağlantı oluşturmak için "Bağlan" düğmesine tıklayın. Apidog, el sıkışma sırasında Parametreler, Başlıklar ve Çerezler gibi parametreleri özelleştirmenizi sağlar.

3. Mesaj Gönderin ve Alın: Bağlantı kurulduktan sonra, "Mesaj" sekmesine erişerek mesaj gönderebilir ve alabilirsiniz. Metin, JSON, XML, HTML ve diğer metin formatı mesajların yanı sıra Base64 veya Onaltılık kullanarak ikili format mesajlar oluşturma seçeneğiniz vardır. Apidog'un yeni zaman çizelgesi görünümü, bağlantı durumunu, gönderilen mesajları ve alınan mesajları kronolojik sırayla görüntüler. Bir mesaja tıklamak, ayrıntılarını kolayca görüntülemenizi sağlar.

4. API Dokümantasyonu: Apidog, WebSocket etkileşimlerinizin etkili bir şekilde belgelenmesini sağlayan WebSocket API'leri için güçlü API dokümantasyon işlevselliğini miras alır.

Apidog, WebSocket bağlantılarını test etmenizi ve hatalarını ayıklamanızı sağlayan basit ve güçlü bir araçtır. Apidog'un bir web tarafı ve bir istemci tarafı vardır. Web tarafını kullanıyorsanız ve yerel hizmetlerin hata ayıklamasını yapmanız gerekiyorsa, Apidog için Google eklentisini yüklemeniz gerekir.
Buradan indirin: Apidog Tarayıcı Uzantısı
Javascript WebSockets'in Gerçek Dünya Örnekleri
WebSocket harika çünkü tarayıcı ve sunucu arasında gerçek zamanlı iletişim sağlar. İçeriğini gerçek zamanlı olarak, sayfayı yeniden yüklemeden güncelleyebilen etkileşimli ve ilgi çekici web uygulamaları oluşturmanıza olanak tanır. WebSocket, çeşitli amaçlar için kullanılabilir, örneğin:

- Sohbet: WebSocket, kullanıcıların gerçek zamanlı olarak mesaj, emoji, resim, video veya ses göndermesine ve almasına olanak tanıyan sohbet uygulamaları oluşturmak için kullanılabilir. WebSocket ayrıca, kullanıcıların aynı anda birden fazla kişiyle iletişim kurmasına olanak tanıyan grup sohbeti, video sohbeti veya sesli sohbet uygulamaları oluşturmak için de kullanılabilir.
- Bildirimler: WebSocket, kullanıcıları yeni mesajlar, yeni takipçiler, yeni beğeniler, yeni yorumlar veya yeni siparişler gibi önemli olaylar hakkında uyaran bildirim sistemleri oluşturmak için kullanılabilir. WebSocket ayrıca, hizmet çalışanları ve web itme API'lerini kullanarak, kullanıcılar web sitesinde olmasalar bile kullanıcılara ulaşabilen itme bildirimleri oluşturmak için de kullanılabilir.
- Canlı Veri: WebSocket, borsa fiyatları, hava durumu güncellemeleri, spor skorları, haber başlıkları veya sosyal medya akışları gibi dinamik ve gerçek zamanlı verileri görüntüleyen canlı veri uygulamaları oluşturmak için kullanılabilir. WebSocket ayrıca, gerçek zamanlı olarak güncellenebilen grafikler, grafikler, haritalar veya panolar görüntüleyen canlı veri görselleştirme uygulamaları oluşturmak için de kullanılabilir.
- Oyun: WebSocket, kullanıcıların gerçek zamanlı grafikler, ses veya video kullanarak diğer kullanıcılarla çevrimiçi oyunlar oynamasına olanak tanıyan oyun uygulamaları oluşturmak için kullanılabilir. WebSocket ayrıca, kullanıcıların odalara katılmalarına, diğer oyuncularla sohbet etmelerine veya skorlarını ve başarılarını paylaşmalarına olanak tanıyan çok oyunculu oyun uygulamaları oluşturmak için de kullanılabilir.
Javascript WebSockets Kullanımı İçin En İyi Uygulamalar
WebSockets kullanırken, kodunuzun güvenli ve verimli olmasını sağlamak için en iyi uygulamaları izlemek önemlidir. İşte akılda tutulması gereken bazı en iyi uygulamalar:
Bir WebSocket Kitaplığı Kullanın: Geliştirme sürecini basitleştirmek ve farklı tarayıcılar ve cihazlar arasında uyumluluğu sağlamak için mevcut WebSocket kitaplıklarından yararlanın.
- WebSockets'inizi Güvenli Hale Getirin: Verileri şifrelemek ve dinlemeyi önlemek için her zaman
wss://
(WebSocket Secure) kullanmayıws://
(WebSocket) kullanmaya tercih edin. Bu, güvenli HTTP bağlantıları için HTTPS kullanmaya benzer. - Konuşkan Protokollerden Kaçının: Ağ trafiğini azaltmak ve performansı artırmak için WebSocket bağlantısı üzerinden gönderilen mesaj sayısını en aza indirin.
- Ağ Topolojisini Göz Önünde Bulundurun: WebSocket bağlantılarını etkileyebilecek güvenlik duvarları ve proxy sunucuları dahil olmak üzere uygulamanızın ağ topolojisine dikkat edin.
- Tarayıcı Sınırlamaları: Tarayıcı sınırlamalarının farkında olun ve tutarlı davranış sağlamak için WebSocket uygulamanızı farklı tarayıcılarda test edin.
- Engelleme İşlemlerinden Kaçının: JavaScript'te, tarayıcının ana iş parçasını dondurabilen ve WebSocket iletişimini bozabilen engelleme işlemlerinden kaçının.
- Bellek Kullanımını İzleyin: WebSocket bağlantıları düzgün yönetilmezse potansiyel olarak bellek sızıntılarına yol açabileceğinden, bellek kullanımına göz kulak olun.
- Bağlantıları Güvenli Hale Getirmek İçin TLS Kullanın: Tüm bağlantıları güvenli hale getirmek, veri bütünlüğünü ve gizliliğini sağlamak için TLS (Taşıma Katmanı Güvenliği) kullanın.
- Bozuk Bağlantıları İşleyin: Mümkün olduğunda otomatik yeniden bağlantıya izin vererek, bozuk WebSocket bağlantılarını algılamak ve işlemek için mantık uygulayın.
- Ölçeklenebilirlik: Açık bağlantı sayısı ve mesaj işleme hızı göz önünde bulundurularak, WebSocket altyapınızı ölçeklenebilirlik için tasarlayın.
Bu en iyi uygulamaları izleyerek, gelişmiş güvenlik ve performans ile gerçek zamanlı işlevsellik sağlayan sağlam ve verimli WebSocket uygulamaları oluşturabilirsiniz. Uygulamanızı her zaman iyice test etmeyi ve WebSocket teknolojisindeki en son gelişmeleri takip etmeyi unutmayın.
Sonuç
Sonuç olarak, WebSockets, bir istemci ve sunucu arasındaki gerçek zamanlı iletişim için güçlü bir araçtır. Sohbet odaları ve çevrimiçi oyunlar gibi gerçek zamanlı uygulamalar için faydalı olan çift yönlü iletişime izin verirler.
En iyi uygulamaları izleyerek ve Apidog gibi araçları kullanarak, WebSocket kodunuzun güvenli ve verimli olmasını sağlayabilirsiniz. Öyleyse, ne bekliyorsunuz? Web uygulamalarınızda bugün WebSockets kullanmaya başlayın!
Ek Kaynaklar
WebSockets hakkında daha fazla bilgi edinmenize yardımcı olacak bazı ek kaynaklar şunlardır: