Takip et

Node.js ile Çok Odalı WebSocket Sohbet Sunucusu ve Kullanıcı Varlığı

Node.js ile Çok Odalı WebSocket Sohbet Sunucusu ve Kullanıcı Varlığı

Merhaba! Bu makalede, Node.js kullanarak çok odalı bir WebSocket sohbet sunucusu nasıl geliştireceğinizi adım adım anlatacağım. Aynı zamanda, sunucuda hangi kullanıcıların aktif olduğunu gösteren bir kullanıcı varlığı sistemi de ekleyeceğiz. Bu, gerçek zamanlı uygulamalar geliştirmek için harika bir temel oluşturur. Öncelikle, gerekli kütüphaneleri kuracağız.

Gerekli Kütüphanelerin Kurulumu

İşe başlamadan önce, ws kütüphanesini kurmalıyız. Bu kütüphane, Node.js uygulamalarımızda WebSocket bağlantıları yönetmemizi sağlar. Kurulumu için aşağıdaki komutu kullanabilirsiniz:

npm install ws

Bu kütüphane kurulduktan sonra, kodumuza başlayabiliriz. Öncelikle, WebSocket sunucumuzu oluşturalım. Bu sunucu, istemcilerden gelen bağlantıları kabul edecek ve mesajları iletecektir.

WebSocket Sunucusunun Oluşturulması

Aşağıdaki kod bloğu, basit bir WebSocket sunucusu oluşturur. Bu sunucu, belirtilen portta dinler ve bağlantıları kabul eder. Her bağlantı için, bir fonksiyon çalıştırılır ve bu fonksiyon içinde gelen mesajları işleriz.

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', ws => {
  console.log('Client connected');
  ws.on('message', message => {
    console.log('Received message:', message);
    // Mesajı diğer istemcilere iletme işlemleri burada gerçekleştirilecektir.
  });
  ws.on('close', () => {
    console.log('Client disconnected');
  });
});

console.log('WebSocket server started on port 8080');

Bu, temel bir WebSocket sunucusudur. Ancak, çok odalı bir sistem ve kullanıcı varlığı izleme için daha fazla işlevselliğe ihtiyacımız var. Şimdi, oda yönetimini ekleyelim.

Çok Odalı Sistemin Eklenmesi

Kullanıcıların farklı odalara katılabilmesi için, her bağlantıya bir oda ataması yapmalıyız. Bunun için, bağlantı nesnesine bir room özelliği ekleyebiliriz. Ayrıca, her odada bulunan kullanıcıları takip etmek için bir clients objesi kullanacağız.

const clients = {}; // Oda ve kullanıcıları takip etmek için

wss.on('connection', ws => {
  // ... (önceki kodlar) ...

  ws.on('message', message => {
    try {
      const data = JSON.parse(message);
      if (data.type === 'join') {
        ws.room = data.room;
        clients[data.room] = clients[data.room] || [];
        clients[data.room].push(ws);
        // Odadaki diğer kullanıcılara katılım bildirimi gönderin
      } else if (data.type === 'message') {
          // Odadaki diğer kullanıcılara mesajı iletin
      }
    } catch (error) {
      console.error('Invalid message format:', error);
    }
  });

  // ... (önceki kodlar) ...
});

Bu kodda, join mesajı ile kullanıcılar bir odaya katılır. clients objesi, her odada bulunan WebSocket bağlantılarını tutar. Mesajlar, sadece aynı odada bulunan diğer kullanıcılara iletilir.

Kullanıcı Varlığının Takip Edilmesi

Kullanıcı varlığını göstermek için, her odadaki aktif kullanıcı sayısını takip etmeliyiz. Bu, kullanıcıların katılıp ayrıldığında clients objesini güncelleyerek yapılabilir. Ayrıca, her odadaki kullanıcı listesini diğer kullanıcılara iletebiliriz.

// ... (önceki kodlar) ...

  ws.on('close', () => {
    if (ws.room) {
      clients[ws.room] = clients[ws.room].filter(client => client !== ws);
      // Odadaki diğer kullanıcılara ayrılım bildirimi gönderin
    }
    console.log('Client disconnected');
  });

// ... (önceki kodlar) ...

Bu kod, bir kullanıcı bağlantıyı kapattığında, o kullanıcı odayı terk etmiş sayılır ve clients objesi güncellenir. Diğer kullanıcılara da bu değişiklik bildirilir. Bu sayede, gerçek zamanlı kullanıcı varlığı güncellemesi sağlanır.

Hata Yönetimi ve Güvenlik

Gerçek dünya uygulamalarında, hata yönetimi ve güvenlik çok önemlidir. Kodunuzda hata yakalama mekanizmaları kullanmalı ve güvenlik açıklarını önlemelisiniz. Örneğin, kullanıcı girdilerini doğrulamak ve kötü amaçlı kod girişini engellemek için önlemler almalısınız. Bu konu hakkında daha fazla bilgi için web sitemi ziyaret edebilirsiniz. Ayrıca, daha gelişmiş bir sohbet uygulaması için, veritabanı entegrasyonu ve kullanıcı kimlik doğrulaması gibi ek özellikler ekleyebilirsiniz.

Bu makalede, Node.js kullanarak çok odalı bir WebSocket sohbet sunucusu oluşturmanın temellerini ele aldık. Umarım bu makale, kendi gerçek zamanlı uygulamalarınızı geliştirmeniz için size yardımcı olmuştur. Daha fazla bilgi için, belgeleri ve örnekleri inceleyebilirsiniz. İngilizce kaynak makaleye de göz atabilirsiniz. Başka sorularınız olursa, beni çekinmeden sorabilirsiniz.

Fatih Soysal

#Etiketler: Node.js, WebSocket, Sohbet Sunucusu, Çok Odalı, Kullanıcı Varlığı, Gerçek Zamanlı, JavaScript, Programlama, Hata Yönetimi, Güvenlik

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık