मैं एक विशिष्ट सॉकेट आईडी पर डेटा भेजना चाहता हूं।
हम पुराने संस्करणों में ऐसा करने में सक्षम थे:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
मैं सॉकेट.आईओ 1.0 में कुछ ऐसा करने के बारे में कैसे जाऊंगा?
मैं एक विशिष्ट सॉकेट आईडी पर डेटा भेजना चाहता हूं।
हम पुराने संस्करणों में ऐसा करने में सक्षम थे:
io.sockets.socket(socketid).emit('message', 'for your eyes only');
मैं सॉकेट.आईओ 1.0 में कुछ ऐसा करने के बारे में कैसे जाऊंगा?
जवाबों:
सॉकेट.आईओ 1.0 में वे इसके लिए एक बेहतर तरीका प्रदान करते हैं। प्रत्येक सॉकेट स्वचालित रूप से स्वयं आईडी द्वारा एक डिफ़ॉल्ट कमरे में शामिल हो जाता है। दस्तावेजों की जाँच करें: http://socket.io/docs/rooms-and-namespaces/#default-room
तो आप निम्नलिखित कोड के साथ आईडी द्वारा सॉकेट के लिए उत्सर्जन कर सकते हैं:
io.to(socketid).emit('message', 'for your eyes only');
सॉकेट.आईओ 1.0 में आप निम्न कोड के साथ ऐसा कर सकते हैं:
if (io.sockets.connected[socketid]) {
io.sockets.connected[socketid].emit('message', 'for your eyes only');
}
अपडेट करें:
@ MustafaDokumacı के उत्तर में एक बेहतर समाधान है।
@Mustafa Dokumacı और @Curious ने पहले से ही पर्याप्त जानकारी प्रदान की है, मैं जोड़ रहा हूं कि आप सॉकेट आईडी कैसे प्राप्त कर सकते हैं।
सॉकेट आईडी का उपयोग करने के लिए socket.id :
var chat = io.of("/socket").on('connection',onSocketConnected);
function onSocketConnected(socket){
console.log("connected :"+socket.id);
}
यदि आपने एक नाम स्थान का उपयोग किया है, तो मैंने पाया कि निम्नलिखित काम करता है:
//Defining the namespace <br>
var nsp = io.of('/my-namespace');
//targeting the message to socket id <br>
nsp.to(socket id of the intended recipient).emit('private message', 'hello');
नाम स्थान के बारे में अधिक जानकारी: http://socket.io/docs/rooms-and-namespaces/
मेरा मानना है कि दोनों @Curious और @ MustafaDokumacı ने समाधान प्रदान किए जो अच्छी तरह से काम करते हैं। हालांकि अंतर यह है कि @ MustafaDokumacı के समाधान के साथ संदेश को एक कमरे में प्रसारित किया जाता है, न कि केवल एक विशेष क्लाइंट को।
जब पावती का अनुरोध किया जाता है तो यह अंतर प्रमुख होता है।
io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});
जबकि उम्मीद के मुताबिक काम करता है
io.to(socketid).emit('message', 'for your eyes only', function(data) {...});
के साथ विफल रहता है
Error: Callbacks are not supported when broadcasting
Node.js में -> socket.io -> वहाँ एक चैट उदाहरण है इसे लाइन में पेस्ट करने के लिए डाउनलोड करें (कनेक्शन पर io) भाग .. मैं इस कोड का उपयोग करता हूं जो 100% काम करता है
io.on('connection', function(socket){
socket.on('chat message', function(msg){
console.log(socket.id);
io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
});
});