UDP 控制器

    指定 Udp 路由解析规则。

    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. return [
    2. 'namespace' => 'ImiDemo\UdpDemo',
    3. // 扫描目录
    4. 'beanScan' => [
    5. // 主服务器配置,提供websocket服务
    6. 'mainServer' => [
    7. 'namespace' => 'ImiDemo\UdpDemo\MainServer',
    8. 'type' => Type::UDP_SERVER,
    9. 'host' => '0.0.0.0',
    10. 'port' => 8087,
    11. 'configs' => [
    12. 'reactor_num' => 2,
    13. 'worker_num' => 2,
    14. 'task_worker_num' => 8,
    15. ],
    16. 'dataParser' => Imi\Server\DataParser\JsonObjectParser::class,
    17. }

    由于UDP的特性,所以不支持分组发送。如有需要,可根据实际场景自行实现分组。

    方法

    1. /**
    2. * 获取客户端的socket id
    3. * @return int
    4. */
    5. public function getFd(): int;
    1. /**
    2. * 获取客户端信息
    3. * @return array
    4. */
    5. public function getClientInfo();
    6. // 格式同:https://wiki.swoole.com/wiki/page/477.html