node js, socket.io oda ve özel mesaj
Merhabalar, nodejs ve socket.io kullanarak sohbet uygulaması yapmaya çalışıyorum. İnternette bulduğum kaynakları kullanarak oda olayını yapmaya çalıştım fakat beceremiyorum.
Server:
io.on('connection', function(socket){
socket.on('room', function(room) {
socket.join(room);
});
socket.on('chat', function(msg){
io.emit('chat', msg);
});
});
Client:
var socket = io.connect('***'); // server ipsi yazarak bağlanabiliyorum
socket.emit('room','2'); // 2 isimli odaya bağlanmaya çalışıyorum
$('form').submit(function(){
socket.emit('chat', {"name": $('#n').val(), "message": $('#m').val()}); // isim ile mesaj gönderme kısmında da sorun yok
$('#m').val('');
return false;
});
socket.on('chat', function(msg){
$('#messages').append($('<li>').html("<b>"+msg.name+":</b> "+msg.message)); // mesajları alarak html'e ekleyebiliyorum. sorunsuz.
});
Bu kodlar şu anda yüklü fakat oda olayı çalışmıyor.
Eğer 2 isimli odaya bağlanma kodlarımda bir sorun yoksa ve bağlanıyorsa, farklı bir sekme açıp 1 odasına bağlanıp mesaj gönderdiğimde, bu mesajlar neden 2 numaralı odaya bağlı olan sekmeye düşüyor?
İstediğim tam olarak şu;
Sayfa yüklendiğinde x odasına bağlansın ve gönderilen tüm mesajlar x odasındakilere gönderilsin. Ayrıca alınan mesajlar da sadece x odasına gönderilen mesajlar olsun. Ayrıca kullanıcıların birbirine özel mesaj gönderebilmesini nasıl yapabilirim?
Cevaplarınız için şimdiden teşekkürler.
Sorunun kısa cevabı budur
socket.join(room_name);
socket.on('chat message', function (msg) {
io.to(room_name).emit('chat message', msg);
});