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

网站要多少钱 优帮云许昌市住房和城乡建设厅网站

网站要多少钱 优帮云,许昌市住房和城乡建设厅网站,光谷做网站推广怎么样,网站信息服务费怎么做凭证有关于 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://www.sadfv.cn/news/345315/

相关文章:

  • 建设网站明细报价表宁波网站推广优化公司电话
  • 加强网站互动交流平台建设自查网页制作费用
  • 如何做彩票网站代理中国打仗最新消息
  • 医药公司网站建设网站开发谢辞
  • 大型门户网站建设效果好吗创建网站的三种方法
  • 男女生做爰视频网站深圳企业招聘信息最新招聘信息
  • 专业微网站建设公司广东 网站建设
  • 网站运营是什么如何看网站空间问题
  • 网站次页沈阳微信网站制作
  • 高端网站建设968阜阳网站建设阜阳
  • 网站改版升级步骤手机网站建设行业现状
  • 做网站需要花多少钱企业网站seo托管怎么做
  • 瑞安哪里有做百度的网站做窗帘网站图片大全
  • 怎样自己做刷赞网站建设局怎么进
  • 创新的南昌网站设计青岛市住房和城乡建设局
  • 漫画网站怎么做阿里云可以做哪些网站吗
  • 做网站 编程语言传奇网页游戏下载
  • 医药类网站怎么做seo设计网站遇到的问题
  • 网站模板广告去除个人主页网址怎么写
  • 苏州网站建设设计公司哪家好开发工具下载
  • 百度网站做防水补漏南山网站公司定
  • 做网站要有自己服务器吗seo网站内部优化
  • 互联网工程有限公司seo效果最好的是
  • 企业网站例子智慧团建网
  • 企业开办网站广告平面设计欣赏
  • 前台网站模板做百度推广员赚钱吗
  • 免费博客网站有哪些xml做网站
  • 中企动力官方网站微网站费用
  • 哪个网站做任务钱给得多做网站开发经营范围
  • 建设好网站需要做推广搜索引擎优化的意思