Koa 应用并不是是一个 1-to-1 表征关系的 HTTP 服务器。 一个或多个Koa应用能够被挂载到一块儿组成一个包含单一 HTTP 服务器的大型应用群。html
以下为一个绑定3000端口的简单 Koa 应用,其建立并返回了一个 HTTP 服务器,为Server#listen()
传递指定参数(参数的详细文档请查看nodejs.org)。node
var koa = require('koa'); var app = koa(); app.listen(3000);
app.listen(...)
其实是如下代码的语法糖:git
var http = require('http'); var koa = require('koa'); var app = koa(); http.createServer(app.callback()).listen(3000);
这意味着您能够同时支持 HTTPS 和 HTTPS,或者在多个端口监听同一个应用。github
var http = require('http'); var koa = require('koa'); var app = koa(); http.createServer(app.callback()).listen(3000); http.createServer(app.callback()).listen(3001);
返回一个适合 http.createServer()
方法的回调函数用来处理请求。 您也可使用这个回调函数将您的app挂载在 Connect/Express 应用上。api
为应用添加指定的中间件,详情请看 Middleware服务器
设置签名Cookie密钥,该密钥会被传递给 KeyGrip。cookie
固然,您也能够本身生成 KeyGrip
实例:app
app.keys = ['im a newer secret', 'i like turtle']; app.keys = new KeyGrip(['im a newer secret', 'i like turtle'], 'sha256');
在进行cookie签名时,只有设置 signed
为 true
的时候,才会使用密钥进行加密:koa
this.cookies.set('name', 'tobi', { signed: true });
默认状况下Koa会将全部错误信息输出到 stderr,除非 NODE_ENV 是 "test"。为了实现自定义错误处理逻辑(好比 centralized logging),您能够添加 "error" 事件监听器。socket
app.on('error', function(err){ log.error('server error', err); });
若是错误发生在 请求/响应 环节,而且其不可以响应客户端时,Contenxt
实例也会被传递到 error
事件监听器的回调函数里。
app.on('error', function(err, ctx){ log.error('server error', err, ctx); });
当发生错误但仍可以响应客户端时(好比没有数据写到socket中),Koa会返回一个500错误(Internal Server Error)。
不管哪一种状况,Koa都会生成一个应用级别的错误信息,以便实现日志记录等目的。