连接分组

IMI 支持对 WebSocket 的连接(fd)进行逻辑分组,你可以方便地对用户进行分组消息推送。

所有的分组针对服务器,所以需要IMI的服务器对象才可以调用下面这些方法,比如在WebSocketController中可以使用$this->server

分组的使用

分组创建

  1. // 创建一个分组
  2. $this->server->createGroup('分组名称');
  3. // 创建一个分组,最多允许加入10个连接,-1为不限制
  4. $this->server->createGroup('分组名称', 10);

加入分组

  1. $this->server->joinGroup('分组名称', $this->frame->getFd());

离开分组

  1. $this->server->leaveGroup('分组名称', $this->frame->getFd());

获取分组对象

  1. // 不存在则为null,否则为\Imi\Server\Group\Group对象
  2. $this->server->getGroup('分组名称');

组是否存在

  1. $this->server->hasGroup('分组名称');

调用组方法

  1. // 遍历g1分组中所有fd,调用服务器的push方法,发送message
  2. $this->server->groupCall('g1', 'push', 'message');

获取所有分组

  1. $this->server->getGroups();

分组对象详解

\Imi\Server\Group\Group

加入组

  1. $group->join($fd);

离开组

  1. $group->leave($fd);

获取服务器对象

当前分组属于哪个服务器,这个是Swoole的服务器对象。

  1. $group->getServer();

获取最大客户端数量

  1. $group->getMaxClients();

调用组方法

  1. // 发送给组里所有的连接,其它服务器方法一样调用,省去fd参数即可
  2. $group->push('message');