दिलचस्प पोस्ट
आपका सबसे विवादास्पद प्रोग्रामिंग राय क्या है? 64 बिट सिस्टम में केवल 48 बिट पते का स्थान क्यों है? क्या टीसीपी और यूडीपी सॉकेट समान पोर्ट का उपयोग कर सकते हैं? सभी निजी / स्थानीय चर-पूर्व घोषित करें? सीखने आईफोन गेम विकास अस्तित्व का उपयोग करते हुए उपचर 1 या मौजूद है * एंड्रॉइड: अलार्म मैनेजर का उपयोग कैसे करें HttpPost के साथ मापदंडों का उपयोग कैसे करें Asp.net रिलीज बिल्ड वि डीबग बिल्ड एक स्ट्रिंग के लिए नियमित अभिव्यक्ति जिसमें कम से कम 14 वर्ण होने चाहिए, जहां न्यूनतम 2 नंबर होते हैं, और कम से कम 6 अक्षर होते हैं Matlab में एलिमेंट-वार ऐरेरा रिकप्लेक्शन कोणीय / यूआई-राउटर – मैं यूआरएल को रीफ्रेशिंग सब कुछ के बिना कैसे अपडेट कर सकता हूं? JS में यादृच्छिक संख्या को दोहराते हुए उत्पन्न क्या मैं अनुरोध पर बाहरी स्टाइलशीट लोड कर सकता हूं? एचटीएमएल चपलता पैक पट्टी टैग श्वेतसूची में नहीं

किसी विशेष क्लाइंट को socket.io के साथ संदेश कैसे भेजें

मैं socket.io + node.js से शुरू कर रहा हूँ, मुझे पता है कि स्थानीय रूप से एक संदेश भेजने के लिए और socket.broadcast.emit() फ़ंक्शन को प्रसारित करने के लिए: – सभी जुड़े ग्राहकों को एक ही संदेश प्राप्त होता है।

अब, मैं जानना चाहूंगा कि किसी विशेष ग्राहक को निजी संदेश कैसे भेजा जाए, मेरा मतलब है कि 2 व्यक्ति (क्लाइंट-टू-क्लाइंट स्ट्रीम) के बीच एक निजी बातचीत के लिए एक सॉकेट है। धन्यवाद।

Solutions Collecting From Web of "किसी विशेष क्लाइंट को socket.io के साथ संदेश कैसे भेजें"

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

उपयोगकर्ता नाम और सॉकेट की एक जोड़ी इस प्रकार एक ऑब्जेक्ट में संग्रहीत की जानी चाहिए:

 var users = { 'userA@example.com': [socket object], 'userB@example.com': [socket object], 'userC@example.com': [socket object] } 

क्लाइंट पर, निम्न डेटा के साथ एक ऑब्जेक्ट को सर्वर पर फेंकना:

 { to:[the other receiver's username as a string], from:[the person who sent the message as string], message:[the message to be sent as string] } 

सर्वर पर, संदेशों के लिए सुनो। जब कोई संदेश प्राप्त होता है, तो डेटा को रिसीवर से निकाला जाता है

 users[data.to].emit('receivedMessage', data) 

क्लाइंट पर, 'प्राप्त मेसेज' नामक सर्वर से निकलते हैं, और डेटा को पढ़ने से आप यह देख सकते हैं कि यह कौन से आया था और जो संदेश भेजा गया था

आप socket.io कमरे का उपयोग कर सकते हैं। क्लाइंट साइड से किसी भी अनन्य पहचानकर्ता (ईमेल, आईडी) के साथ एक घटना (इस मामले में "शामिल", कुछ भी हो सकता है) का उत्सर्जन करता है।

ग्राहक की ओर:

 var socket = io.connect('http://localhost'); socket.emit('join', {email: user1@example.com}); 

अब, सर्वर साइड से उस उपयोगकर्ता के लिए एक अनूठे कमरा बनाने की जानकारी का उपयोग किया जाता है

सर्वर साइड:

 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.on('join', function (data) { socket.join(data.email); // We are using room of socket io }); }); 

इसलिए, अब हर उपयोगकर्ता उपयोगकर्ता के ईमेल के नाम पर एक कमरे में जुड़ गया है। इसलिए यदि आप एक विशिष्ट उपयोगकर्ता को एक संदेश भेजना चाहते हैं तो आपको बस इतना करना होगा

सर्वर साइड:

 io.sockets.in('user1@example.com').emit('new_msg', {msg: 'hello'}); 

क्लाइंट की ओर से आखिरी चीज को छोड़ दिया गया है "new_msg" ईवेंट को सुनना

ग्राहक की ओर:

 socket.on("new_msg", function(data) { alert(data.msg); } 

मुझे आशा है कि आपको यह विचार मिलेगा।

सुनिश्चित करें: बस,

यह वही चीज़ है जिसकी आपको आवश्यकता है :

 io.to(socket.id).emit("event", data); 

जब भी कोई उपयोगकर्ता सर्वर से जुड़ता है, आईडी सहित सॉकेट विवरण उत्पन्न किया जाएगा। यह आईडी वास्तव में विशेष लोगों को संदेश भेजने में मदद करता है।

पहले हमें सरणी में सभी socket.ids को संग्रहित करने की आवश्यकता है,

 var people={}; people[name] = socket.id; 

यहां नाम रिसीवर का नाम है। उदाहरण:

 people["ccccc"]=2387423cjhgfwerwer23; 

इसलिए, अब जब हम संदेश भेज रहे हैं तो रिसेट के नाम से उस सॉकेट.आईडी प्राप्त कर सकते हैं।

इसके लिए हमें रिसीवरनाम नाम जानना होगा। आपको रिसीवर नाम सर्वर से निकालने की आवश्यकता है।

अंतिम बात यह है:

  socket.on('chat message', function(data){ io.to(people[data.reciever]).emit('chat message', data.msg); }); 

आशा है कि यह आपके लिए अच्छी तरह से काम करता है। !!

आप socket.io कमरे का उल्लेख कर सकते हैं। जब आप सॉकेट को हाथ से निकालते हैं – उदाहरण के लिए, "उपयोगकर्ता। # {Userid}" नाम से उसके नाम पर आप जुड़ सकते हैं।

उसके बाद, आप किसी भी ग्राहक को सुविधाजनक नाम से निजी संदेश भेज सकते हैं, उदाहरण के लिए:

io.sockets.in ('user.125')। emit ('new_message', {text: "हैलो वर्ल्ड"})

उपर्युक्त ऑपरेशन में हम "new_message" को उपयोगकर्ता "125" भेजते हैं।

धन्यवाद।

हमारी कंपनी के एक प्रोजेक्ट में हम "कमरे" दृष्टिकोण का उपयोग कर रहे हैं और यह नाम एक अद्वितीय पहचानकर्ता (हमारे कार्यान्वयन फेसबुक मैसेंजर की तरह अधिक है) के रूप में बातचीत में सभी उपयोगकर्ताओं के उपयोगकर्ता आईडी का संयोजन है, उदाहरण:

| आईडी | नाम | 1 | स्कॉट | 2 | सुसान

"कमरा" नाम "1-2" होगा (आईसीएस का आदेश दिया जाता है।) और डिस्कनेक्ट करें socket.io पर स्वचालित रूप से कमरे को साफ करता है

इस तरह से आप उस कमरे में और केवल ऑनलाइन (जुड़े) उपयोगकर्ताओं (कम सर्वर पर भेजे गए पैकेज) के लिए संदेश भेजते हैं।