मैंने सभी उपयोगकर्ताओं को एक संदेश प्रसारित करने के लिए एक कोड लिखा :
// websocket and http servers
var webSocketServer = require('websocket').server;
...
...
var clients = [ ];
var server = http.createServer(function(request, response) {
// Not important for us. We're writing WebSocket server, not HTTP server
});
server.listen(webSocketsServerPort, function() {
...
});
var wsServer = new webSocketServer({
// WebSocket server is tied to a HTTP server.
httpServer: server
});
// This callback function is called every time someone
// tries to connect to the WebSocket server
wsServer.on('request', function(request) {
...
var connection = request.accept(null, request.origin);
var index = clients.push(connection) - 1;
...
कृपया ध्यान दें:
- मेरे पास कोई उपयोगकर्ता संदर्भ नहीं है, लेकिन केवल एक कनेक्शन है।
- सभी उपयोगकर्ता कनेक्शन में संग्रहीत हैं
array
।
लक्ष्य : मान लीजिए कि Node.js सर्वर एक विशिष्ट ग्राहक (जॉन) को संदेश भेजना चाहता है। जॉन को किस कनेक्शन से NodeJs सर्वर पता होगा? Node.js सर्वर भी जॉन को नहीं जानता है। यह सब देखता है कनेक्शन है।
इसलिए, मेरा मानना है कि अब, मुझे उपयोगकर्ताओं को केवल उनके कनेक्शन द्वारा स्टोर नहीं करना चाहिए, इसके बजाय, मुझे एक ऑब्जेक्ट स्टोर करने की आवश्यकता है, जिसमें ऑब्जेक्ट userId
और connection
ऑब्जेक्ट शामिल होंगे ।
विचार:
जब पृष्ठ लोड करना समाप्त कर लेता है (DOM तैयार) - Node.js सर्वर से एक कनेक्शन स्थापित करें।
जब Node.js सर्वर कनेक्शन स्वीकार करता है - एक अद्वितीय स्ट्रिंग उत्पन्न करता है और इसे क्लाइंट ब्राउज़र को भेजता है। किसी ऑब्जेक्ट में उपयोगकर्ता कनेक्शन और अद्वितीय स्ट्रिंग संग्रहीत करें। जैसे
{UserID:"6", value: {connectionObject}}
क्लाइंट की ओर से, जब यह संदेश आता है - इसे एक छिपे हुए क्षेत्र या कुकी में संग्रहीत करें। (NodeJs सर्वर के भावी अनुरोधों के लिए)
जब सर्वर जॉन को संदेश भेजना चाहता है:
शब्दकोश में जॉन के यूजरआईडी का पता लगाएं और संबंधित कनेक्शन द्वारा एक संदेश भेजें।
कृपया ध्यान दें कि यहां कोई भी asp.net सर्वर कोड नहीं है (संदेश तंत्र में)। केवल NodeJs। "
सवाल:
क्या यह जाने का सही तरीका है?