walkor / webman-framework

webman-framework
116 stars 57 forks source link

增加对框架路由对长轮询响应的支持 #88

Open chaz6chez opened 1 year ago

chaz6chez commented 1 year ago

原理

  1. 使用workerman自带的Timer对长轮询请求进行处理
  2. onMessage忽略来自LongPollingResponse的send处理

描述

  1. 增加了LongPollingResponse
    • LongPollingResponse接收request对象参数及wait参数
    • wait参数用于控制长轮询等待时长
  2. 修改了App.php onMessage、send部分

使用

  1. 控制器返回LongPollingResponse对象即可
    public function test(Request $request): Response
    {
        return (new LongPollingResponse($request,200, [], '{"info": "this is long polling response. "}',  20));
    }

优化

目前只是一个demo,实现简单的长轮询响应,后期可以对其功能性进行增加和优化; 可以对长轮询响应数量上限做限制或者超时时间做处理,当超过阈值时自动退化为正常请求响应;