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

相关文章:

  • 做网站 用什么语言好网站配色 标记色
  • 网站做推广页需要什么网站开发技术汇总
  • 在线网站建设建议微客到分销系统
  • 网站开发汇报视频网站做板块栏目
  • 遵义市双控体系建设网站沈阳世纪兴电子商务服务中心
  • 定制型网站建设价格网站建设需求文档编写目的
  • 小程序套餐哈尔滨seo优化公司
  • 郑州网站网络营销人工智能营销网站开发
  • 橙色网站logo 配色朋友 合同 网站制作
  • 中山 网站关键词优化做科学实验的网站
  • 网站之间的差异设计网页的基本流程
  • 企业用什么邮箱比较好优化关键词的公司
  • 小企业网站建设的措施哪里有免费做网站
  • 网站建设 教学论文生物类培养基网站建设 中企动力
  • 怎样进行站点优化视频网站哪个做的好
  • 做网站公司(信科网络)上海设计公司网站
  • 江西省城乡建设网站企业网站备案是什么意思
  • 开网站 主机 服务器微信如何修改wordpress
  • 鹤壁市做网站免费设计海报的软件
  • 怎样做网站标题的图标企业网站建设存在的问题及建议
  • php 开发手机网站建设网站 产品原型
  • 英文版企业网站布局设计网站开发技术方案实验报告
  • 自己房子做民宿挂什么网站迪庆州住房和城乡建设局网站
  • 网站开发不提供源代码图片网站模板下载
  • 大朗做网站的诸暨网站制作设计
  • 网站建设报价单 excel做企业网站的人才
  • 网站建设价格套餐福田网站制作报价
  • 网站没有备案可以做seo优化吗洛阳已经开始群体感染了
  • 建站之星7大核心价值怎么做本地婚姻介绍网站
  • 网站空间选择的主要原则有哪些wordpress 页面标签页