WebMan钩子问题

mon

不知道webman是否会考虑加入一些内置的钩子供开发者在程序运行中的某些特定的生命周期中运行自定义的业务呢?
如:onMessage开始时及结束时,exceptionResponse自定义错误处理存在错误异常继续上报时等生命周期

812 1 0
1个回答

walkor

onMessage 也就是请求周期,用中间件即可介入请求周期,中间件里通过 $request->exception(); 可以获得exceptionResponse的异常。

  • mon 2022-08-02

    中间件应该是在执行回调之前调用的,获取不到exceptionResponse自定义错误处理上报的异常的。另外也无法统一接管响应请求后的生命周期的

  • mon 2022-08-02

    试了下onClose事件并不会在send响应后立即触发的

  • walkor 2022-08-02

    中间件可以介入整个请求周期,包括请求前和响应后
    中间件里获取异常参考手册 https://www.workerman.net/doc/webman/middleware.html#%E4%B8%AD%E9%97%B4%E4%BB%B6%E8%8E%B7%E5%8F%96%E5%BC%82%E5%B8%B8

  • mon 2022-08-02

    确实是可以通过中间件获取到某个请求的响应后生命周期哈,exceptionResponse自定义错误处理上报异常还是不能接管的哈,可能这个场景比较小众的,是自定义异常处理再抛出异常出来的。
    另外我还是建议内置一些生命周期的钩子的,使用中间件的方式在多个中间件情况下感觉会不是很清晰的。
    如: 全局中间件 -> 组别中间件 -> 路由中间件
    这些都设置了中间件的话,太多的业务依靠中间件去实现,感觉可能会使得代码有些许混乱的

  • walkor 2022-08-02

    中间件和钩子是一个效果,webman内核同样的功能不会提供两个实现。$response->exception() 需要 webman-framework >= 1.3.15

  • mon 2022-08-02

    好的,了解

年代过于久远,无法发表回答
🔝