WebSocket 路由
优质
小牛编辑
132浏览
2023-12-01
启用路由
服务器配置文件中加入中间件:
return [
'beans' => [
// 配置 http 为了握手
'HttpDispatcher' => [
'middlewares' => [
\Imi\Server\WebSocket\Middleware\HandShakeMiddleware::class,
\Imi\Server\Http\Middleware\RouteMiddleware::class,
],
],
// WebSocket 配置
'WebSocketDispatcher' => [
'middlewares' => [
\Imi\Server\WebSocket\Middleware\RouteMiddleware::class,
],
],
],
];
通过配置注入形式,实现非常灵活的配置,你甚至可以自己另外实现路由中间件,而不用被框架自带的中间件所影响,用哪些中间件都在你的掌控之中!
获取握手请求路由解析结果
$httpRouteResult = ConnectContext::get('routeResult');
获取握手时的 uri 对象
/** @var \Imi\Util\Uri $uri */
$uri = ConnectContext::get('uri');
获取当前路由解析结果 (routeResult
)
$routeResult = RequestContext::get('routeResult');
$routeResult
定义:
/**
* 路由配置项
*
* @var \Imi\Server\WebSocket\Route\RouteItem
*/
public $routeItem;
/**
* 参数
*
* @var array
*/
public $params;
/**
* 回调
*
* @var callable
*/
public $callable;
$routeResult->routeItem
定义:
/**
* 注解
*
* @var \Imi\Server\Route\Annotation\WebSocket\WSRoute
*/
public $annotation;
/**
* 回调
*
* @var callable|\Imi\Server\Route\RouteCallable
*/
public $callable;
/**
* 中间件列表
*
* @var array
*/
public $middlewares = [];
/**
* 其它配置项
*
* @var array
*/
public $options;