Socket.IO Rooms ve Namespaces Kullanımı
Socket.IO Rooms ve Namespaces Kullanımı
Gerçek zamanlı web uygulamaları geliştirirken en çok tercih edilen kütüphanelerden biri olan Socket.IO, birçok gelişmiş özellik sunar. Bu özellikler arasında en dikkat çekici olanlardan ikisi Socket.IO rooms ve namespaces kavramlarıdır. Peki, Socket.IO rooms ve namespaces tam olarak nedir ve uygulamalarımızda nasıl kullanılır? Bu makalede, Socket.IO'nun rooms ve namespaces yapılarını teknik ayrıntılarıyla ele alacağız.
Socket.IO Namespaces Nedir?
Socket.IO namespaces, bir sunucu üzerinde farklı iletişim kanalları oluşturmamıza olanak sağlar. Varsayılan olarak tüm bağlantılar / adlı ana namespace'e bağlanır. Özel namespaces tanımlayarak, özelleştirilmiş iletişim yolları ve izole event ortamları kurabilirsiniz. Bu, özellikle büyük ölçekli uygulamalarda, modüler yapı ve güvenlik avantajı sağlar.
Namespace Tanımlama ve Kullanımı
// Server tarafı (Node.js)
const io = require('socket.io')(3000);
const adminNamespace = io.of('/admin');
adminNamespace.on('connection', (socket) => {
console.log('Admin paneline biri bağlandı!');
socket.emit('hello', 'Merhaba admin!');
});
// Client tarafı
const socket = io('/admin');
socket.on('hello', (msg) => {
console.log(msg); // "Merhaba admin!"
});
Yukarıdaki örnekle, yalnızca /admin namespace'ine bağlanan client'lar ilgili event'leri alacaktır.
Socket.IO Rooms (Odalar) Nedir?
Rooms, aynı namespace içindeki clientlar arasında daha küçük gruplar oluşturmanıza imkan verir. Özellikle oyunlar, sohbet uygulamaları veya özel bildirim sistemlerinde rooms ile özelleştirilmiş gruplara mesaj gönderebilmek mümkündür. Her client birden fazla room'a dâhil olabilir ve rooms server tarafında dinamik olarak yönetilir.
Rooms Kullanarak Mesaj Gönderme
// Server tarafı
io.on('connection', (socket) => {
socket.join('myRoom'); // 'myRoom' adlı odaya katılır
socket.on('myMessage', (data) => {
io.to('myRoom').emit('roomMessage', data);
});
});
// Client tarafı
socket.on('roomMessage', (msg) => {
console.log('Oda mesajı:', msg);
});
Bu yapı sayesinde aynı odadaki tüm kullanıcılar, event tetiklendiğinde mesajı alır.
Rooms ve Namespaces Arasındaki Farklar
Socket.IO rooms ve namespaces çoğunlukla karıştırılır fakat yapısal olarak farklı işlevlere sahiptir. Namespaces, sunucuya gelen bağlantıları mantıksal olarak ayırırken; rooms, tek bir namespace altında gruplar oluşturmaya yarar. Rooms ile daha esnek kullanım sağlanır, ancak sadece aynı namespace içinde çalışır.
Sonuç ve Kullanım Senaryoları
Socket.IO rooms ve namespaces özellikleri, gerçek zamanlı uygulamaların daha ölçeklenebilir ve yönetilebilir olmasını sağlar. Oyunlar, canlı destek sistemleri, grup sohbetler ve bildirim uygulamalarında çok sık tercih edilir. Uygulamanızın mimarisine uygun olarak bu iki yapıyı verimli şekilde entegre etmek performans ve yönetilebilirlik açısından büyük avantaj sunar.

Yorum Gönder