2016-04-14 26 views
0

numaralı bağlantıyı kurmuyor gibi görünüyor. İstemcim ve sunucumda yuvalar oluşturdum, ancak verilerimin istemciye gelmesini sağlayamıyorum. Düzgün bağlanıyor gibi görünüyorlar, sadece gelebilecek herhangi bir veri alamıyorum. Hata mesajı da yoktur. Ben, ben sadece can oldukça basit bir örnektir Dediğim gibiİstemci, Socket.io ile veri almaya çalışıyor ancak

loadMessagesFromServer: function(){ 
    console.log("About to load messages") 
    socket.on('custom-message', function(msg){ 
     console.log("connected in client", msg) 
    }); 
    }, 

: Burada

io.on('connection', function (socket) { 

    console.log('a user connected'); 

    socket.on('custom-message', function() { 
    console.log("Hitting messages socket"); 
    Message.find(function(err, messages){ 
     if(err){ 
     socket.emit('custom-message', err) 
     } else { 
     socket.emit('custom-message', messages); 
     } 
    }) 
    }); 

}); 

soketine bağlanan istemci fonksiyonudur: Burada

benim sunucu kodu loadMessagesFromServer içinde veri almak için görünmüyor .. Ve hiçbir hata vardır, hata ayıklama tek yolu farklı şeyler deniyor ..

cevap

0

Siz etkinlikte dinliyor messages. Yani aynı olayı socket.emit('messages: err', err)'dan göndermelisiniz. socket.emit("messages", error) ile deneyin. Dahası, sunucu tarafı kodunuzda, bir message olayını almanız gerekir ve ancak o zaman soketiniz mesajları yayacaktır. socket.on(custom-messages)'u kaldırın. Ona neden ihtiyacın var?

Sunucu tarafı kodu

io.on('connection', function (socket) { 
/* Here a client connection is established. The on("connection") 
* event will be triggered as many times as`io.connect("the-uri")` 
* is triggered (and succeeded) in the client` 
*/ 

// Listening for the post event 
    socket.on("post", function(messages){ 
     console.log("client posted data:", messages)  

     // Find messages and emit result 
     Message.find(function(err, messages){ 
     if(err){ 
      socket.emit('error', err) 
     } else { 
      socket.emit("message", messages); 
     } 
     }); 

    }); 
}); 

İstemci taraflı kod Ayrıca

registerOnMessageFromServerListener: function(){ 
    socket.on("message", function(msg){ 
    console.log("received message:", msg); 
}); 

registerOnErrorFromServerListener: function(){ 
    socket.on("error", function(error){ 
    console.log("an error occured:", error); 
}); 

registerOnMessageFromServerListener(); 
registerOnErrorFromServerListener(); 
socket.emit("post", "a-message"); 

ben hayata

+0

soket bağlantı kurmak için önce loadMessagesFromServer çağrı emin olun değişir. Yeni değişiklikleri yansıtmak için yukarıdaki kodu güncelledim. İlk önce bir mesaj almasını nasıl sağlayabilirim? Veritabanında mesajlar var, bu yüzden Message.find() mesajlarını alıp iletmekten daha fazlasını mı sandım? – fresh5447

+0

Tamam, bu yüzden çalışır. Fakat şimdi 'bağlantıda 'sadece mesaj almayı destekliyor. Bunu kurmak için çalışıyordum, bu yüzden içinde "POST" mesajını kullanmamı sağlayan ikinci bir işlev var. Bunu yukarıda anladığım şekilde çalışmayabilir miyim? – fresh5447

+0

Temel olarak neden yolunuzun çalıştığını anlamıyorum, ancak yukarıdaki gibi değil. İkinci bir io.on (bağlantı) 'açmadan bir' POST' soketini nasıl oluşturursunuz? – fresh5447

İlgili konular