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都會生成一個應用級別的錯誤信息,以便實現日誌記錄等目的。