2013-02-08 24 views
14

का उपयोग करके gzip में डेटा भेजते हैं, मैंने gzip में पाठ भेजने की कोशिश की, लेकिन मुझे नहीं पता कि कैसे। examples में कोड fs का उपयोग करता है, लेकिन मैं एक टेक्स्ट फ़ाइल नहीं भेजना चाहता, बस एक स्ट्रिंग।नोडजेज zlib

var zlib = require('zlib'); 
var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'}); 

    var text = "Hello World!"; 
    res.end(text); 

}).listen(80); 

उत्तर

26

आप वहां आधे रास्ते हैं। मैं दिल से सहमत हूं कि दस्तावेज यह कैसे करना है इस पर नाराज नहीं है;

var zlib = require('zlib'); 
var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'}); 

    var text = "Hello World!"; 
    var buf = new Buffer(text, 'utf-8'); // Choose encoding for the string. 
    zlib.gzip(buf, function (_, result) { // The callback will give you the 
     res.end(result);      // result, so just send it. 
    }); 
}).listen(80); 

एक सरलीकरण Buffer उपयोग करने के लिए नहीं किया जा सकता है;

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html', 'Content-Encoding': 'gzip'}); 

    var text = "Hello World!"; 
    zlib.gzip(text, function (_, result) { // The callback will give you the 
     res.end(result);      // result, so just send it. 
    }); 
}).listen(80); 

... और यह डिफ़ॉल्ट रूप से UTF-8 भेजने के लिए लगता है। हालांकि, मैं व्यक्तिगत रूप से सुरक्षित पक्ष पर चलना पसंद करता हूं जब कोई डिफ़ॉल्ट व्यवहार नहीं होता है जो दूसरों की तुलना में अधिक समझ में आता है और मैं तुरंत दस्तावेज़ीकरण के साथ इसकी पुष्टि नहीं कर सकता।

इसी तरह, मामले में आप के बजाय एक JSON ऑब्जेक्ट पारित करने के लिए की जरूरत है:

var data = {'hello':'swateek!'} 

res.writeHead(200, {'Content-Type': 'application/json', 'Content-Encoding': 'gzip'}); 
var buf = new Buffer(JSON.stringify(data), 'utf-8'); 
zlib.gzip(buf, function (_, result) { 
    res.end(result); 
}); 
+0

क्या का मूल्य 'कॉलबैक में _' दर्शाता है? मैं शायद एक त्रुटि सोच रहा हूं, लेकिन इसे दस्तावेज नहीं मिला ... – cprcrack

+0

@cprcrack यह कॉलबैक के लिए सिर्फ एक अप्रयुक्त पैरामीटर है। '_' एक चर/पैरामीटर नाम के रूप में मान्य है और मैं इसे मार्कर के रूप में उपयोग करता हूं जो इसे स्पष्ट (मेरे लिए) बनाता है जिसका उपयोग नहीं किया जाता है। –

+0

मुझे यह विचार मिलता है, लेकिन फिर भी यह जानना चाहेंगे कि कॉलबैक कॉलर उस पैरामीटर का उपयोग क्यों कर रहा है और कभी-कभी इसका उपयोग/उपयोगी हो सकता है। – cprcrack