असल में, मैं स्क्रैच से node.js का उपयोग कर एक मूल धूमकेतु सर्वर और क्लाइंट स्थापित करने की कोशिश कर रहा हूं। इस प्रक्रिया के बारे में Google चीजों को आजमाने की कोशिश की गई है और जैसा कि मैं परीक्षण कर रहा हूं, यह ठीक काम करता प्रतीत होता है। हालांकि अभी भी एक सवाल मेरे सिर में है। सबसे पहले मैं आपको कोड दिखाना चाहता हूं।नोड.जेएस और धूमकेतु
var http = require('http');
var sys = require('sys');
var fs = require('fs');
var qs = require('querystring');
var server = http.createServer();
var connections = [];
server.on('request', function(req, res) {
console.log(req.url);
if(req.url == '/index') {
fs.readFile(__dirname + '/index.html', function(err, data){
if(err) {
res.writeHead(err, data);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
} else if(req.url == '/sendData') {
if (req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function() {
var POST = qs.parse(body);
console.log(POST);
res.writeHead(200);
res.end("");
broadcastData(POST);
});
}
} else {
connections.push(res);
}
});
function broadcastData(data) {
for(var i = 0; i < connections.length; i++) {
connections[i].writeHead(200);
connections[i].end(JSON.stringify({'message': data}));
}
}
process.openStdin().addListener('data', function(chunk) {
for(var i = 0; i < connections.length; i++) {
connections[i].writeHead(200);
var message = chunk.toString();
connections[i].end(JSON.stringify({'message': {'name': message}}));
}
});
server.listen(4000);
ग्राहक के पक्ष:
function doComet() {
$.getJSON('/', function(events){
doComet();
console.log(events);
$('#content').append(events.message.name);
});
}
function sendData(data) {
$.ajax({
type: "POST",
url: "/sendData",
contentType: 'application/javascript; charset=UTF-8',
data: { name: "John", location: "Boston" }
}).done(function(msg) {
console.log(msg)
});
}
तो वहाँ है एक श्रोता जो डेटा जो मैं stdin पर लिख सकते हैं और यह भी ग्राहक के पक्ष पर एक बटन सर्वर को डेटा भेजेंगे जो वहाँ भेजता है और सर्वर इसे सभी ग्राहकों को भेजता है।
मेरा प्रश्न यह है कि यदि बहुत सी घटनाएं वास्तव में कम समय में होती हैं? मेरा मतलब है कि सर्वर से एक प्रतिक्रिया मिलने के तुरंत बाद एक और AJAX अनुरोध भेजा जाता है लेकिन क्लाइंट अभी तक कनेक्ट नहीं होने पर थोड़ी सी अवधि होनी चाहिए और यदि उस समय कुछ ऐसा होता है तो ग्राहक के पास ताजा डेटा नहीं होगा।
तो क्या मेरे विचार इस बारे में सही हैं? इस मामले में किसी भी तरह से मुझे यह सुनिश्चित करने के लिए डेटा को ठीक से सिंक करना चाहिए कि हर कोई इसे प्राप्त कर लेता है। क्या कोई जानता है कि इसे ठीक से कैसे किया जाए?
आपकी मदद के लिए धन्यवाद!
आप अपना खुद का धूमकेतु क्यों लागू कर रहे हैं? आपको उन कई पुस्तकालयों में से एक का उपयोग करना चाहिए जो आपके लिए इसे संभालते हैं जैसे कि http://socket.io/ – generalhenry
मुझे क्यों चाहिए? मुझे कोई दिलचस्पी है कि बिना किसी ज्ञान के इसका उपयोग करने से पहले ये चीजें कैसे काम करती हैं। – stomseven
मेरे पास आपके कोड को थोड़ा सा साफ करने के रूप में गेटटन है: http://runnable.com/UWhebgy1CIBlAACD अभी भी बाढ़ के मुद्दे – generalhenry