WebSocket 控制器

    指定 WebSocket 路由解析规则。

    1. // 解析 $data['action'] === 'login'
    2. @WSRoute({"action"="login"})
    3. // 解析 $data['a']['b']['c'] === 'login'
    4. @WSRoute({"a.b.c"="login"})
    5. // 解析 $data['a'] == '1' && $data['b'] == '2'
    6. @WSRoute({"a"="1", "b"="2"})
    1. // 解析 $data->a->b->c === 'login'
    2. @WSRoute({"a.b.c"="login"})

    路由匹配成功,就会执行这个动作。

    1. return ['success'=>true];
    1. $this->server->groupCall('组名', 'push', ['success'=>true]);

    当然,并不是每个请求都需要有响应数据,什么都不return或者return null就是不响应数据。

    方法

    获取Swoole的Server对象

    1. /**
    2. * 组是否存在
    3. *
    4. * @param string $groupName
    5. * @return boolean
    6. */
    7. public function hasGroup(string $groupName);
    1. /**
    2. * 获取组对象,不存在返回null
    3. * @param string $groupName
    4. * @return \Imi\Server\Group\Group|null
    5. */
    1. /**
    2. * 加入组,组不存在则自动创建
    3. *
    4. * @param string $groupName
    5. * @param integer $fd
    6. * @return void
    7. */
    8. public function joinGroup(string $groupName, int $fd);
    1. /**
    2. * 离开组,组不存在则自动创建
    3. *
    4. * @param string $groupName
    5. * @param integer $fd
    6. * @return void
    7. */
    8. public function leaveGroup(string $groupName, int $fd);
    1. /**
    2. * 调用组方法
    3. *
    4. * @param string $groupName
    5. * @param string $methodName
    6. * @param mixed ...$args
    7. * @return array
    8. */
    9. public function groupCall(string $groupName, string $methodName, ...$args);
    1. /**
    2. *
    3. */
    4. public function getGroups(): array;

    方法

    1. /**
    2. * 数据内容,可以是文本内容也可以是二进制数据,可以通过opcode的值来判断
    3. * @return string
    4. */
    5. public function getData();
    1. /**
    2. * 获取格式化后的数据,一般是数组或对象
    3. * @return mixed
    4. */
    5. public function getFormatData();
    1. /**
    2. * WebSocket的OpCode类型,可以参考WebSocket协议标准文档
    3. * WEBSOCKET_OPCODE_TEXT = 0x1 ,文本数据
    4. * WEBSOCKET_OPCODE_BINARY = 0x2 ,二进制数据
    5. * @return int
    6. */
    7. public function getOpcode();
    1. /**
    2. * 表示数据帧是否完整
    3. * @return boolean
    4. */
    5. public function isFinish();
    1. /**
    2. * 获取 \Swoole\Websocket\Frame 对象
    3. * @return \Swoole\Websocket\Frame
    4. */