当前位置: 首页 > news >正文

企业网站维护外包河北省住房城乡建设局网站

企业网站维护外包,河北省住房城乡建设局网站,3322域名注册,wordpress 文章的php有关于 Transfer-Encoding:chunked 类型的响应#xff0c;参见之前的文章HTTP 响应的分块传输。这里看 Koa 中如何实现。 Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接调用 response.write#xff1a; Bypassing Koas response handling is not supported. Avoid … 有关于 Transfer-Encoding:chunked 类型的响应参见之前的文章HTTP 响应的分块传输。这里看 Koa 中如何实现。 Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接调用 response.write Bypassing Koas response handling is not supported. Avoid using the following node properties: res.statusCoderes.writeHead()res.write()res.end() 但要实现分片向客户端发送数据必然还是得调用 Node.js Http 模块的 response.write(chunk[, encoding][, callback]) 方法而这里的 response 就是 ctx.res 或 ctx.response。 所以为什么 Koa 要说不建议直接调用上述方法操作请求的返回呢我们来看看 Koa 内部对 response 都会做些什么默认的处理。 application.js handleRequest(ctx, fnMiddleware) {const res ctx.res;res.statusCode 404;const onerror err ctx.onerror(err);const handleResponse () respond(ctx);onFinished(res, onerror);return fnMiddleware(ctx).then(handleResponse).catch(onerror);} 在应用完各种中间件后fnMiddleware(ctx)通过 handleResponse 对请求进行一些操作最终是在 respond 函数里。 respond 方法 function respond(ctx) {// allow bypassing koaif (false ctx.respond) return;if (!ctx.writable) return;const res ctx.res;let body ctx.body;const code ctx.status;// ignore bodyif (statuses.empty[code]) {// strip headersctx.body null;return res.end();}if (HEAD ctx.method) {if (!res.headersSent isJSON(body)) {ctx.length Buffer.byteLength(JSON.stringify(body));}return res.end();}// status bodyif (null body) {if (ctx.req.httpVersionMajor 2) {body String(code);} else {body ctx.message || String(code);}if (!res.headersSent) {ctx.type text;ctx.length Buffer.byteLength(body);}return res.end(body);}// responsesif (Buffer.isBuffer(body)) return res.end(body);if (string typeof body) return res.end(body);if (body instanceof Stream) return body.pipe(res);// body: jsonbody JSON.stringify(body);if (!res.headersSent) {ctx.length Buffer.byteLength(body);}res.end(body); } respond 方法里会根据外部是否有设置过 ctx.body以及不同的 header 来设置 ctx.body最终会调用 response.end 来结束掉本次请求。 注意到如果设置了 ctx.respond false这个方法就直接 return 了这是一种跳过这里处理的方式。但其实如果我们在中间件中手动调用了 ctx.res.end() 后相当于已经提前结束掉请求了同样也不会走 Koa 这里的处理。 所以直接在中间件中调用 ctx.res.write() 及 ctx.res.end() 就可以实现 chunked 类型的响应倒无须对 Koa 做额外设置。 Koa 实现 chunked 数据传输 根据上面的分析及之前一篇关于HTTP 响应的分块传输的文章我们得出以下 Koa 中的实现逻辑 const Koa require(koa); const app new Koa(); const PORT 3000; app.use((ctx, _next) {const res ctx.res;ctx.status 200;res.setHeader(Content-Type, text/html);res.write(startbr);return new Promise(resolve {let i 0,total 5;while (i total) {(function(i) {setTimeout(() {if (i total) {resolve();res.end();} else {res.write(${i}br);}}, i * 1000);})(i);i;}}); });app.listen(PORT); console.info(server started at http://localhost:${PORT}); 运行效果 Koa 中实现 chunked 响应的运行效果 如你所见Koa 中的这个实现会在调用 ctx.res.end() 后将本来应该在页面内容中处于最顶部的内容移动到最底部。不解。 或者通过 curl 在命令行中查看效果 $ curl -N http://localhost:3000 命令行中接收 chunked 数据的效果 示例代码可在 wayou/koa-chunked-response 找到。 相关资源 wayou/koa-chunked-responseKoa documentationNode.js Docs - response.write(chunk[, encoding][, callback])Node.js Docs - response.end([data][, encoding][, callback])转载于:https://www.cnblogs.com/Wayou/p/koa_transfer_encoding_chunked.html
http://wiki.neutronadmin.com/news/225129/

相关文章:

  • 贵州网站推广公司网络管理系统的基本组件包括哪些
  • 济南市高新技术官方网站开发区sem专员
  • 文化网站建设免费自己制作网站教程
  • 建设网站参数电商推广工作内容
  • 牵牛建站大连工程预算服务
  • 网站自然排名工具企业的网站内容
  • 做网站费用入什么科目网站开发实训总结
  • 桂林网站制作公司华彩wordpress mxtheme02
  • 安徽网站建站系统平台一般做网站是在什么网站找素材
  • 网站推广120如何使用wordpress
  • 兰州最好的网站建设公司哪家好wordpress svg
  • 搜索品牌价值的网站最新seo快排技术qq
  • 做网站销售的网站后台从哪里进去
  • 哪个网站做h5比较好制作app的网站哪个好
  • 代理网站备案怎么看一个网站有没有做百度推广
  • 怎么建造网站辽宁做网站哪家好
  • 门户网站ui设计长沙有哪些楼盘
  • 房产网站模板网站制作公司兴田德润实力强
  • 太原微信网站开发福州网站开发哪家比较好
  • 网站 新媒体建设情况安装wordpress数据库连接时出错
  • 来宾住房与城乡建设网站wordpress 链接提交
  • 垂直行业门户网站建设方案历史网站怎么做
  • 东盟建设集团有限公司网站网站全背景做多大
  • 公司网站引导页WordPress 评论列表折叠
  • 视频多的网站建设百度关键词点击工具
  • 公司网站建设站酷网页开发需要学什么
  • 如何制作网站后台管理系统都江堰seo
  • 自己免费做网站的流程响应式布局代码怎么写
  • 不同性质网站电子商务网站建设与管理的学后感
  • 什么网站可以用视频做背景信息管理与信息系统