当前位置: 首页 > 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.yutouwan.com/news/37148/

相关文章:

  • 汉口网站建设制作网站设计工
  • 企业网站后台管理软件网站建设提案怎么写
  • 临沂市建设工程多图联审系统 网站怎么用ps做网站超链接
  • 网站开发研究背景网页设计作业文件
  • 网站建设完成确认书展会搭建设计案例网站
  • 网站建设知识论文代理游戏网站
  • 网站搭建网平面设计学徒工资一般多少
  • 古腾堡布局的网站相关网站怎么做
  • 工会 网站 建设合肥做推拉棚网站推广
  • 域名出售网站阿里云域名注册流程
  • 昌邑网站建设seo自学网视频教程
  • 创建网站开发公司服务器做网站数据库
  • 网站建设与管理ppt模板下载wordpress免费建站
  • 合肥科技职业学院网站建设与管理做app模板网站有哪些内容
  • seo查询是什么商城网站不易优化
  • 网站开发的背景知识与相关技术做p2p投资理财的网站
  • 网站的锚点链接怎么做代运营公司
  • wap网站如何建设网站建设的核心是什么
  • 长春住房和城乡建设部官方网站关于动漫的网站建设
  • 无锡时光科技网站建设公司怎么样江苏林润建设工程有限公司网站
  • 一站式网页设计服务平台网页设计公司的目标客户有哪些
  • wordpress站内查找搜狗搜索排名优化
  • 深圳高端做网站公司网站商城方案
  • 怎么快速做网站文章网站建设与管理维护参考文献
  • 网站建设 广告帮别人建设网站多少利润
  • 中国工程建设企业协会网站南京明辉建设有限公司网站
  • 专业网站开发制作公司厦门软件园网站开发
  • 中国交通建设监理协会网站如何做织梦论坛类的网站
  • 电子商务网站建设前期规划方案建设网站的企业公司
  • 网页设计公司网站设计公司注册资金多少的利弊