2010-10-09 9 views
7

इस बहुत ही सरल उदाहरण में में ग्राहक के बारे में जानकारी प्राप्त करने के लिए:कैसे Node.js

var sys = require("sys"), 
    http = require("http"); 

http.createServer(function(request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.end("Hello World!"); 
}).listen(8080); 

sys.puts("Server running at http://localhost:8080/"); 

1.) मैं ग्राहक से किस प्रकार की जानकारी प्राप्त कर सकते हैं? ब्राउज़र, स्क्रीन संकल्प, आदि की तरह?

2.) मैं पैरामीटर की तरह क्लाइंट से सर्वर पर जानकारी कैसे भेज सकता हूं?

धन्यवाद!

उत्तर

5

आप स्क्रीन संकल्प जानकारी नहीं मिल सकता है, लेकिन आप अनुरोध हेडर "उपयोगकर्ता-एजेंट"

+0

इसके लिए आवश्यक कोड क्या है? मैंने req.getHeader ('उपयोगकर्ता-एजेंट') की कोशिश की है लेकिन यह नहीं लगता कि काम करता है। – zzaman

+11

@zzaman req.headers ['user-agent'] का प्रयास करें - नोड में सभी शीर्षलेख [लोअरकेस हैं] (http://nodejs.org/docs/latest/api/http.html#http_request_headers)। – phreakhead

6

क्या आपने API docs पढ़ा है? Req ऑब्जेक्ट एक http.ServerRequest ऑब्जेक्ट है जैसा दस्तावेज़ किया गया है। यह HTTP है, और संकल्प जैसी चीजें प्रोटोकॉल का हिस्सा नहीं हैं। आप जो प्राप्त कर सकते हैं वह उपयोगकर्ता-एजेंट है, और वहां से आप किसी अन्य सेवा का उपयोग करके अधिक जानकारी प्राप्त कर सकते हैं।

याद रखें कि node.js एक स्टैंडअलोन ऐप है - यह ब्राउज़र में नहीं चल रहा है - यह एक HTTP सर्वर अनुप्रयोग है जो एक जेएस दुभाषिया में चल रहा है।

+0

लिंक मृत, बस एक FYI – TERMtm

+0

धन्यवाद - अपडेट किया गया। –

16

1) रेफ़रलकर्ता URL, आईपी पता, उपयोगकर्ता एजेंट, स्क्रीन आकार और अन्य stats से उपयोगकर्ता एजेंट मिल सकती है। आप भू-स्थान भी प्राप्त कर सकते हैं लेकिन यह अधिक शामिल है।

2) कुछ डेटा शीर्षकों में उपलब्ध हैं, इसलिए इन्हें प्रत्येक अनुरोध पर भेजा जाता है - अन्य आकार जैसे स्क्रीन आकार थोड़ा ट्रिकियर है ताकि आप उसे भेजने के लिए AJAX अनुरोध करना चाहें।

// Somewhere on your page(s) - here we use jQuery 
$(document).ready(function(){ 
    // Check if they have been logged 
    if ($.cookie('logged') == null){ 
    // Send screen size and whatever else that is not available from headers 
    $.post('/logger', { width: screen.width, height: screen.height }, function(res) { 
     // Set cookie for 30 days so we don't keep doing this 
     $.cookie('logged', true, { expires: 30 }); 
    }); 
    } 
}); 

// Server side - example is an Express controller 
exports.logger = function(req, res) { 
    var user = { 
    agent: req.header('user-agent'(, // User Agent we get from headers 
    referrer: req.header('referrer'), // Likewise for referrer 
    ip: req.header('x-forwarded-for') || req.connection.remoteAddress, // Get IP - allow for proxy 
    screen: { // Get screen info that we passed in url post data 
     width: req.param('width'), 
     height: req.param('height') 
    } 
    }; 
    // Store the user in your database 
    // User.create(user)... 
    res.end(); 
} 
+0

'रेफरर' के लिए, ब्राउजर [भेज देंगे] (https://en.wikipedia.org/wiki/HTTP_referer#Etymology) एक एकल आर एक्सप्रेस के साथ 'रेफरर' उचित वर्तनी में इसका अनुवाद नहीं करता है, इसलिए उपर्युक्त आवश्यकताओं 'req.headers [ 'रेफ़रर']'। – Arjan

+0

@ अरजन वे अदलाबदल योग्य हैं। एक्सप्रेस ईथर को संभाल सकता है। https://github.com/expressjs/express/blob/master/lib/request.js#L76 – cyberwombat

+0

यह अजीब है, जैसा कि मैंने उस टिप्पणी को पोस्ट करने से पहले परीक्षण किया था (और यहां तक ​​कि एक्सप्रेस को समझाते हुए मेरे कोड में एक टिप्पणी भी शामिल नहीं है .. ।)। कल फिर से जांच करेगा, लेकिन आपका लिंक झूठ नहीं बोलता है ... :-) – Arjan