2012-07-14 16 views
5

मुझे websockets (socket.io + node.js) का उपयोग करके दो बार चैट बनाने की आवश्यकता है। तो, सरल उदाहरण सभी उपयोगकर्ताओं के लिए संदेश प्रसारित करने:socket.io - कुछ उपयोगकर्ताओं को प्रसारित

socket.on('user message', function (msg) { 
    socket.broadcast.emit('user message', socket.nickname, msg); 
    }); 

लेकिन मैं इसे कैसे निश्चित उपयोगकर्ता के लिए कुछ उपयोगकर्ता से प्रसारित कर सकते हैं?

1) प्रत्येक सॉकेट की अपनी अनूठी आईडी socket.id में संग्रहीत करता है:

उत्तर

13

दो possibilites रहे हैं। तुम दोनों प्रयोक्ताओं की आईडी पता है, तो आप बस

io.sockets[id].emit(...) 

2)) अपनी खुद की आईडी (उदाहरण के उपयोगकर्ता का नाम के लिए परिभाषित करें और connection हैंडलर में

socket.join('priv/John'); 

का उपयोग कर सकते हैं। अब जब भी आप केवल John को संदेश भेजने के लिए चाहते हैं, तो आप बस

socket.broadcast.to('priv/John').emit(...) 

साइड टिप्पणी करते हैं: लिए एक से अधिक मशीनों के आकार में निर्धारित नहीं किया जा सकता पहला समाधान है, तो दूसरा एक का उपयोग कर रहा सलाह।

+2

मैं उपयोगकर्ताओं को रेल के साथ MySQL में संग्रहीत कर रहा हूं, तो, मैं उपयोगकर्ता आईडी को डीबी से सॉकेट आईडी तक कैसे जोड़ सकता हूं? –

संबंधित मुद्दे