WebSocket 控制器
指定 WebSocket 路由解析规则。
// 解析 $data['action'] === 'login'
@WSRoute({"action"="login"})
// 解析 $data['a']['b']['c'] === 'login'
@WSRoute({"a.b.c"="login"})
// 解析 $data['a'] == '1' && $data['b'] == '2'
@WSRoute({"a"="1", "b"="2"})
// 解析 $data->a->b->c === 'login'
@WSRoute({"a.b.c"="login"})
路由匹配成功,就会执行这个动作。
return ['success'=>true];
$this->server->groupCall('组名', 'push', ['success'=>true]);
当然,并不是每个请求都需要有响应数据,什么都不return
或者return null
就是不响应数据。
方法
获取Swoole的Server对象
/**
* 组是否存在
*
* @param string $groupName
* @return boolean
*/
public function hasGroup(string $groupName);
/**
* 获取组对象,不存在返回null
* @param string $groupName
* @return \Imi\Server\Group\Group|null
*/
/**
* 加入组,组不存在则自动创建
*
* @param string $groupName
* @param integer $fd
* @return void
*/
public function joinGroup(string $groupName, int $fd);
/**
* 离开组,组不存在则自动创建
*
* @param string $groupName
* @param integer $fd
* @return void
*/
public function leaveGroup(string $groupName, int $fd);
/**
* 调用组方法
*
* @param string $groupName
* @param string $methodName
* @param mixed ...$args
* @return array
*/
public function groupCall(string $groupName, string $methodName, ...$args);
/**
*
*/
public function getGroups(): array;
方法
/**
* 数据内容,可以是文本内容也可以是二进制数据,可以通过opcode的值来判断
* @return string
*/
public function getData();
/**
* 获取格式化后的数据,一般是数组或对象
* @return mixed
*/
public function getFormatData();
/**
* WebSocket的OpCode类型,可以参考WebSocket协议标准文档
* WEBSOCKET_OPCODE_TEXT = 0x1 ,文本数据
* WEBSOCKET_OPCODE_BINARY = 0x2 ,二进制数据
* @return int
*/
public function getOpcode();
/**
* 表示数据帧是否完整
* @return boolean
*/
public function isFinish();
/**
* 获取 \Swoole\Websocket\Frame 对象
* @return \Swoole\Websocket\Frame
*/