× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

Coroutine\Http\Server->handle

设置连接处理函数。函数原型:

function Coroutine\Http\Server->handle(string $pattern, callable $fn);
  • 服务器在Accept成功后,会自动创建协程并接受Http请求
  • $fn是在新的子协程空间内执行,因此在函数内无需再次创建协程
  • 客户端支持KeepAlive,子协程会循环继续接受新的请求,而不退出
  • 客户端不支持KeepAlive,子协程会停止接受请求,并退出关闭连接

必须在Server::start之前设置处理函数

参数

  • $pattern:设置URL路径,如//user/index.html
  • $fn:设置对应的处理器,请求处理的回调函数与Http\Server完全一致

注意

  • $pattern设置相同路径时,新的设置会覆盖旧的设置
  • 未设置/根路径处理函数并且请求的路径没有找到任何匹配的$pattern,底层将返回404错误
  • $pattern使用字符串匹配的方法,不支持通配符和正则
  • 请勿设置包含关系的两个$pattern,如/test/tests,可能会导致无法路由
  • 可设置/根路径处理函数,并在回调函数中使用$request->server['request_uri']进行请求路由

回调函数

function callback(Swoole\Http\Request $req, Swoole\Http\Response $resp) {
    $resp->end("hello world");
}

请参考 Http\RequestHttp\Response


  • cxlbme

    这个路由不应该是交给用户自己处理的吗?这意思就用不了RESTful风格的路由!如果要是用是不是只用设置根路由, 然后自己再处理