क्या यह कोड मान्य HTTP/1.1 है?नोड.जेएस: खंडित स्थानांतरण एन्कोडिंग
var fs = require('fs')
var http = require('http')
var buf=function(res,fd,i,s,buffer){
if(i+buffer.length<s){
fs.read(fd,buffer,0,buffer.length,i,function(e,l,b){
res.write(b.slice(0,l))
//console.log(b.toString('utf8',0,l))
i=i+buffer.length
buf(res,fd,i,s,buffer)
})
}
else{
fs.read(fd,buffer,0,buffer.length,i,function(e,l,b){
res.end(b.slice(0,l))
fs.close(fd)
})
}
}
var app = function(req,res){
var head={'Content-Type':'text/html; charset=UTF-8'}
switch(req.url.slice(-3)){
case '.js':head={'Content-Type':'text/javascript'};break;
case 'css':head={'Content-Type':'text/css'};break;
case 'png':head={'Content-Type':'image/png'};break;
case 'ico':head={'Content-Type':'image/x-icon'};break;
case 'ogg':head={'Content-Type':'audio/ogg'};break;
case 'ebm':head={'Content-Type':'video/webm'};break;
}
head['Transfer-Encoding']='chunked'
res.writeHead(200,head)
fs.open('.'+req.url,'r',function(err,fd){
fs.fstat(fd,function(err, stats){
console.log('.'+req.url+' '+stats.size+' '+head['Content-Type']+' '+head['Transfer-Encoding'])
var buffer = new Buffer(100)
buf(res,fd,0,stats.size,buffer)
})
})
}
http.createServer(app).listen(8000,"127.0.0.1")
console.log('GET http://127.0.0.1:8000/appwsgi/www/index.htm')
मुझे लगता है कि मैं यहां HTTP/1.1 का उल्लंघन कर रहा हूं? टेक्स्ट फाइलें ठीक काम करने लगती हैं, लेकिन यह संयोग हो सकता है। क्या मेरा हेडर "200 ओके" है या इसे "100" होना चाहिए? क्या एक हेडर पर्याप्त है?
यह भ्रमित है क्योंकि प्रतिक्रिया को 200 होने की आवश्यकता होती है जब खंडित पैकेज भेजे जा रहे हैं? –
@Gert Google की ओर से हेडर्स को पढ़ें, मैंने अपनी प्रतिक्रिया में पोस्ट किया है जिसमें 200 ओके हैं। बेशक, अगर आप रीडायरेक्ट कर रहे हैं या किसी और के बाहर कुछ और हैं "हाँ मेरे पास यह फ़ाइल अभी है और इसे आपको भेजने जा रहा है" टाइप की स्थिति, आपको इसके बजाय उचित शीर्षलेख का उपयोग करना चाहिए। मैं सभी शीर्षकों पर एक नज़र डालने की सलाह देता हूं और वे किसके लिए खड़े हैं: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html। यदि आप निम्न स्तर पर node.js का उपयोग करना जारी रखना चाहते हैं तो यह आपके लिए फायदेमंद होगा। स्पष्ट कोडसेट के साथ –