2011-10-31 11 views
8

पर संदेश भेजना मैं चैट एप्लिकेशन बनाने के लिए node.js और socket.io का उपयोग कर रहा हूं। किसी अन्य सॉकेट को संदेश कैसे भेजें, मुझे सॉकेट या केवल उपयोगकर्ता नाम की आईडी पता है। कोई कमरा नहीं है, ग्राहक एक पर चैट करते हैं।एक अद्वितीय सॉकेट

उत्तर

21

सॉकेट.आईओ के साथ, आप केवल कनेक्शन फ़ंक्शन के कॉलबैक के भीतर सॉकेट ऑब्जेक्ट का उपयोग करने तक ही सीमित नहीं हैं। आप एक ऑब्जेक्ट बना सकते हैं जो सॉकेट ऑब्जेक्ट को किसी विशेष उपयोगकर्ता नाम के लिए संग्रहीत करता है और जब कोई क्लाइंट संदेश भेजता है तो संदेश भेजने के लिए सॉकेट को देखता है। आपको प्रत्येक संदेश के साथ लक्षित लक्ष्य को प्रेषित करने की आवश्यकता होगी।

उदाहरण:

var sockets = {}; 

... 

io.on('connection', function(socket){ 
    socket.on('set nickname', function (name) { 
     sockets[name] = socket; 
    }); 
    socket.on('send message', function (message, to) { 
     sockets[to].emit(message); 
    }); 
}); 

examples page of Socket.IO's website के बारे में अधिक उदाहरण देखें।

+0

महान, वह यह है कि समाधान –

+0

कैसे संभाल करने के लिए किसी भी उपनाम से संबंधित नहीं है है "से"? उदाहरण के लिए; उपनाम "ए" उपनाम "बी" को संदेश भेजता है, उपनाम "बी" उपनाम "सी" को संदेश भेजता है। और वहां कोई उपनाम नहीं है "सी" फिर त्रुटि दें = "अपरिभाषित संपत्ति 'emit' नहीं पढ़ सकता" – drojokef

0

आप इस तरह सभी सॉकेट के उपयोगकर्ता नाम संपत्ति की जाँच कर सकते हैं:

socket.on('send message', function(message,to){ 

    io.sockets.clients().forEach(function (socket) { 

     if (socket.username==to){socket.emit(message);} 

    }); 

}); 
संबंधित मुद्दे