网络服务 (Router)
DANGER
ctx.router
需要手动声明为 inject
。在未来的版本,我们将会把此服务移至插件中。
TIP
Koishi 默认情况下并不会监听任何端口,如要启用网络服务请记得配置 options.port
。
ctx.router
是 Koishi 的内置服务,提供了一个基于 Koa Router 的简单路由系统,用于管理 Koishi 应用收到的网络请求。除了 Koa Router 所支持的部分方法外,Router API 还提供了一些额外的功能,例如支持接受 WebSocket 连接等。
WARNING
请避免使用未在本页列出的方法:
- Koa Router 的 API 并不是副作用安全的。我们对本页列出的方法进行了特殊处理,使其在插件卸载时自动删除路由。但使用其他方法会导致你的插件无法被正常卸载。
- 未来可能会不基于 Koa Router 重新实现路由系统。
实例方法
ctx.router[method](path, middleware)
- method: 可以是
get
,post
,put
,delete
,patch
或all
(仅能是小写) - path:
string | RegExp | (string | RegExp)[]
路径 - middleware:
Function
Koa 中间件
处理特定路径上的网络请求。具体请参见 这里。
ctx.router.ws(path, handler)
- path:
string | RegExp | (string | RegExp)[]
路径 - handler:
WebSocketHandler
处理函数,接受下列参数- socket:
WebSocket
WebSocket 连接 - request:
IncomingMessage
网络请求
- socket:
在给定的路径上支持 WebSocket 连接。