2011-07-17 15 views
12

socket.io के साथ कई चैट रूम प्रबंधित करने का सही तरीका क्या है?socket.io के साथ कई चैट रूम प्रबंधित करने का उचित तरीका क्या है?

io.sockets.on('connection', function (socket) { 
    socket.on('message', function (data) { 
    socket.broadcast.emit('receive', data); 
    }); 
}); 

अब इस एक कमरे के लिए ठीक काम करेगा, के रूप में यह सब जो जुड़े हुए हैं के लिए संदेश का प्रसारण करता है:

तो सर्वर पर वहाँ की तरह कुछ होगा। आप उन लोगों को संदेश कैसे भेजते हैं जो विशिष्ट चैट रूम में हैं?

जोड़ें। ('/ Chat/room_name')? या कमरे में सभी की एक सरणी स्टोर करें?

उत्तर

18

Socket.IO v0.7 अब आप नाम स्थान प्रति एक Socket देता है जो आपके द्वारा निर्धारित:

var room1 = io.connect('/room1'); 
room1.on('message', function() { 
    // chat socket messages 
}); 
room1.on('disconnect', function() { 
    // chat disconnect event 
}); 

var room2 = io.connect('/room2'); 
room2.on('message', function() { 
    // chat socket messages 
}); 
room2.on('disconnect', function() { 
    // chat disconnect event 
}); 

अलग सॉकेट के साथ, आप चुनिंदा विशिष्ट नाम स्थान आप चाहते हैं करने के लिए भेज सकते हैं। http://socket.io/#announcement

+0

धन्यवाद, मुझे लगता है कि दूसरा उदाहरण वह है जिसे मैं ढूंढ रहा हूं क्योंकि कमरे गतिशील रूप से बनाए जाते हैं। तो मान लें कि मेरे पास दो अनुभाग हैं, चैट और समूह हैं। क्या मैं io.connect ('/ chat OR/group') करता हूं और किसी विशिष्ट समूह या चैट से कनेक्ट करने के लिए socket.join ('GROUP या CHAT ID') है? –

+0

मुझे विश्वास है। पहला व्यक्ति आपको सब्सक्राइब करने के लिए अलग-अलग चैनल रखने की अनुमति देता है, और दूसरा आपको कमरे की एक साधारण अवधारणा देता है जिससे आप विभिन्न सॉकेट समूह कर सकते हैं। – sntran

2

अपडेट::

Socket.IO v0.7 भी "कमरा"

io.sockets.on('connection', function (socket) { 
    socket.join('a room'); 
    socket.broadcast.to('a room').send('im here'); 
    io.sockets.in('some other room').emit('hi'); 
}); 

स्रोत की अवधारणा है दोनों Now.js और पुल अब मर चुके हैं, now.js dead और bridge dead देखते हैं। लगता है कि सॉकेट.ओ ने कॉलबैक फीचर को v0.9 के रूप में अपनाया है, जो एक अच्छा कदम है। http://nowjs.com/doc

वे अपने offocial में एक बहु कक्ष-चैट उदाहरण है -

हालांकि यह सीधे Socket.io संबंधित, Now.js (एक उच्च स्तर अमूर्त Socket.io के ontop) नहीं है समूहों का समर्थन करता है रेपो यहां: https://github.com/Flotype/now/blob/master/examples/multiroomchat_example/multiroomchat_server.js

+0

वह परियोजना मर सकती है, वेबपृष्ठ 404 है और अंतिम प्रतिबद्धता एक साल पहले थी। – jcollum

+0

@jcollum सही, अद्यतन पोस्ट। – balupton

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