मैं केवल उपयोगकर्ताओं को संदेशों को उत्सर्जित कर सकता हूं जब उनकी सॉकेट आईडी सीधे io.sockets.on ('कनेक्ट') फ़ंक्शन में संग्रहीत की जाती है। मैं क्यों यह जब उनके सॉकेट आईडी स्टोर करने के लिए के बाद वे प्रवेश कर लिया है की कोशिश कर काम नहीं करता है पता नहींअपने सॉकेट के माध्यम से किसी क्लाइंट को संदेश भेजना
कार्य:।
काम नहीं:
var clients = {};
/** A new socket connection has been accepted */
io.sockets.on('connection', function (socket)
{
//Used to access session id
var hs = socket.handshake;
clients[socket.id] = socket; // add the client data to the hash
socket.on('user-login', function(user){
if(!users['brownj2']){
users['brownj2'] = socket.id; // connected user with its socket.id
}
})
socket.on('page-load', function(pid)
{
if(users['brownj2'])
{
clients[users['brownj2']].emit('hello');
}
else
{
console.log("NOT FOUND BROWNJ2");
}
}
}
जावास्क्रिप्ट क्लाइंट-साइड कोड स्निपेट
var socket = io.connect('');
socket.on("hello", function(){
alert("Hi Jack");
console.log("WEBSOCKET RECIEVED");
})
समाधान: धन्यवाद @alessioalex मैं संदर्भ लॉगिन पृष्ठ के socket.io को दूर करने के लिए, और io.sockets.on में निम्नलिखित जोड़ें ('कनेक्शन')
var hs = socket.handshake;
sessionStore.get(hs.sessionID, function(err, session){
console.log("SESSION: " + util.inspect(session));
clients[socket.id] = socket; // add the client data to the hash
validUsers[session.username] = socket.id; // connected user with its socket.id
})
धन्यवाद, यह फिर भी काम करता है जब मैं socket.on इस्तेमाल करने की कोशिश ('लॉग इन', .....) {उपयोगकर्ताओं [यू] = socket.id} यह काम नहीं करता। मैं केवल उपयोगकर्ताओं को io.sockets.on ('कनेक्शन') के अंदर सीधे जोड़ सकता हूं – Jack
क्या आप निश्चित हैं? चूंकि सॉकेट एक चर परिभाषित 'उपरोक्त' है, यह उस फ़ंक्शन में भी दिखाना चाहिए, जैसे कि मैं डिस्कनेक्ट के साथ अपने उदाहरण में दिखाता हूं। – alessioalex
मैंने आपको एक कामकाजी और गैर-कामकाजी उदाहरण दिखाने के लिए प्रश्न को संशोधित किया है। मैं यह नहीं समझ सकता कि यह मुझे उपरोक्त 'गैर-कामकाजी' उदाहरण में संदेश भेजने की अनुमति क्यों नहीं देगा। – Jack