2013-09-06 9 views
5

मैं सर्वरों को किसी सर्वर के संदेशों को प्रसारित करने के लिए sails.js के साथ एक सिस्टम स्थापित करने का प्रयास कर रहा हूं। असल में:Sails.js + socket.io: सर्वर से क्लाइंट को संदेश भेजना

  1. समूह ए में एक क्लाइंट सर्वर पर AJAX अनुरोध भेजता है।
  2. सर्वर अनुरोध संसाधित करता है और
  3. ग्रुप बी के ग्राहकों सॉकेट और प्रदर्शन कुछ के माध्यम से संदेश प्राप्त समूह बी के सभी ग्राहकों के लिए सॉकेट के माध्यम से एक संदेश भेजता है।

socket.io प्रलेखन के अनुसार, मैं एक "कमरा" में शामिल होने के ग्रुप बी में ग्राहकों के लिए सक्षम होना चाहिए, और फिर उस विशिष्ट कक्ष करने के लिए सर्वर प्रसारण है, लेकिन क्लाइंट की तरफ, पहले से मौजूद "सॉकेट" में विधि नहीं है "socket.join ('कमरा')"। तो, मैं सिर्फ सभी ग्राहकों के लिए एक अनूठा घटना भेजने की कोशिश की:

socket.on("connect", function(){ 
    console.log("Client Connected"); 
}); 

socket.on("my_event", function(data){ 
    console.log("my_event received"); 
}); 

यह "sails.io.sockets.emit करके ठीक काम करता है (" my_event ", {...})" सर्वर साइड पर, लेकिन क्या यह हर ग्राहक को घटना नहीं भेज रहा है? मैं ईवेंट नाम अद्वितीय बना सकता हूं, समूह को निर्दिष्ट करने के लिए आईडी के साथ "my_event_000" जैसा कुछ, लेकिन वह अभी भी हर क्लाइंट को अनावश्यक रूप से ईवेंट भेज रहा होगा।

क्या मुझे "कमरे" का उपयोग करना चाहिए? और यदि हां, तो कैसे?

उत्तर

4

ऐसा करने के लिए सेल तरीका आपके "समूह" का समर्थन करने वाला मॉडल होगा, और नियंत्रक कार्रवाई में Group.subscribe(groupId, req.socket) वाले समूह के लिए एक सॉकेट सदस्यता लें। फिर आप Group.publish(groupId, data) के साथ एक विशिष्ट समूह को संदेश भेज सकते हैं।

आप req.listen(groupId) का उपयोग कर नियंत्रक में मनमाने ढंग से कमरे के नाम की सदस्यता भी ले सकते हैं, और req.broadcast(roomName, data) के साथ उस कमरे में प्रसारित कर सकते हैं।

यह सब Sails documentation for working with Sockets में है!

+1

क्या आप कृपया अधिक विशिष्ट उदाहरण प्रदान कर सकते हैं। कुछ और कोड उपयोगी होंगे। प्रदान किए गए लिंक में समूह की चीज़ नहीं लग रही है। –

+0

समूह उदाहरण में मॉडल का नाम है। दस्तावेज़ों में उन्हें 'Model.subscribe',' Model.publish', आदि के रूप में सूचीबद्ध किया गया है। – sgress454

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