zoukankan      html  css  js  c++  java
  • app.listen(3000)的源码 和callback

    
    
      const http = require('http');
     listen(...args) {
        debug('listen');
        const server = http.createServer(this.callback());
        return server.listen(...args);
      }
    const compose = require('koa-compose');
     /**
       * Return a request handler callback
       * for node's native http server.
       *
       * @return {Function}
       * @api public
       */
    
      callback() {
        const fn = compose(this.middleware);  //合并中间件
    
        if (!this.listenerCount('error')) this.on('error', this.onerror);  //有error消息, 比如app.on('error',(err)=>console.log('err',err))
    
        const handleRequest = (req, res) => {
          const ctx = this.createContext(req, res);
          return this.handleRequest(ctx, fn);
        };
    
        return handleRequest;
      }
      /**
       * Initialize a new context.
       *
       * @api private
       */
    
      createContext(req, res) {
        const context = Object.create(this.context);
        const request = context.request = Object.create(this.request);
        const response = context.response = Object.create(this.response);
        context.app = request.app = response.app = this;
        context.req = request.req = response.req = req;
        context.res = request.res = response.res = res;
        request.ctx = response.ctx = context;
        request.response = response;
        response.request = request;
        context.originalUrl = request.originalUrl = req.url;
        context.state = {};
        return context;
      }
     /**
       * Handle request in callback.
       *
       * @api private
       */
    
      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);
      }
     /**
       * Return a request handler callback
       * for node's native http server.
       *
       * @return {Function}
       * @api public
       */

      callback() {
        const fn = compose(this.middleware);

        if (!this.listenerCount('error')) this.on('error'this.onerror);

        const handleRequest = (reqres=> {
          const ctx = this.createContext(reqres);
          return this.handleRequest(ctxfn);
        };

        return handleRequest;
      }
  • 相关阅读:
    2013 duilib入门简明教程 -- 自绘控件 (15)
    2013 duilib入门简明教程 -- 部分bug 2 (14)
    2013 duilib入门简明教程 -- 复杂控件介绍 (13)
    Linux学习88 Mysql常见服务搭档-php-fpm基础应用与实战
    Linux学习87 MariaDB高级操作实战
    Linux学习86 MariaDB基础操作实战
    Linux学习85 MariaDB入门实战
    Linux学习84 数据库体系全面介绍-关系型数据库基础
    Linux学习83 互联网架构-LAMP高级应用与企业项目
    Linux学习82 互联网架构-LAMP入门进阶
  • 原文地址:https://www.cnblogs.com/TTblog5/p/13097252.html
Copyright © 2011-2022 走看看