v2.5.2
Giriş yap

node js, socket.io oda ve özel mesaj

alphabet
1,543 defa görüntülendi ve 3 kişi tarafından değerlendirildi

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.

justdonothing
1486 gün önce

Sorunun kısa cevabı budur

 socket.join(room_name);
 socket.on('chat message', function (msg) {
     io.to(room_name).emit('chat message', msg);
 });