相关疑难解决方法(0)

Node.js:分块传输编码

该代码是否有效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')
Run Code Online (Sandbox Code Playgroud)

我想我在这里违反了HTTP/1.1?文本文件确实可以正常工作,但这可能是巧合.我的标题是"200 OK"还是需要它为"100"?一个标题是否足够?

node.js

9
推荐指数
2
解决办法
3万
查看次数

节点Js与response.write的问题

当我尝试利用http流连接由于某种原因写入不会刷新,直到我调用response.end()
我直接从演示中获取代码,并不明白我的问题是什么.
当我卷曲到服务器时,我的标题是正确的.

HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive
Transfer-Encoding: chunked


var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write('hello');
      res.write(':');
      setTimeout(function(){ 
          res.end('World\n')},
          2000);
    }).listen(1337, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:1337/');
Run Code Online (Sandbox Code Playgroud)

为什么服务器不发送写入数据?

stream http-1.1 node.js

8
推荐指数
1
解决办法
2万
查看次数

我可以在文本/纯内容到达时渲染它吗?

我有一台服务器,它可以在大约 15 秒内传输处理数据。标题如下:

Content-Type:text/plain; charset=utf-8
Transfer-Encoding:chunked
Run Code Online (Sandbox Code Playgroud)

通过 telnet,我可以确认数据在 15 秒内连续发送。在浏览器中,整个页面会挂起,直到收到整个请求,然后立即呈现所有内容。

有时,对于较长的请求,它会挂起一段时间,然后在数据到达时开始将数据流式传输到屏幕,但我还没有推断出发生这种情况的阈值。

我是否可以发送一些标头或其他魔法,以使浏览器在内容可用时立即呈现内容?

browser http chunked-encoding

4
推荐指数
1
解决办法
415
查看次数

标签 统计

node.js ×2

browser ×1

chunked-encoding ×1

http ×1

http-1.1 ×1

stream ×1