小白问题:关于用户分组,怎么获得分组的长度?

chris0753
$socket->on('login', function ($uid)use($socket){
        global $uidConnectionMap;
        global $db;
        $uid1 = explode(',',$uid);
        $db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'root', 'root', 'luck28');
        // 已经登录过了
        if(isset($socket->uid)){
            return;
        }
        // 更新对应uid的在线数据
        $uid = (string)$uid;
        if(!isset($uidConnectionMap))
        {
            $uidConnectionMap = 0;
        }
        // 这个uid有++$uidConnectionMap个socket连接
        ++$uidConnectionMap;
        // 将这个连接加入到uid分组,方便针对uid推送数据
        $socket->join($uid1);
        $socket->uid = $uid;
        // 更新这个socket对应页面的在线数据
        $socket->to($uid)->emit('update_online_count',$uidConnectionMap);
    });

请问怎么获取uid1房间的人数?uidConnectionMap获取的是全局的人数。

2434 1 0
1个回答

latin

count($sender_io->nsps['/']->adapter->rooms[$uid1])

  • chris0753 2020-04-08

    请问如何获取具体房间的全部成员?
    请问这些API去哪里可以找到?
    谢谢。

  • latin 2020-04-08

    没这个api。我都是看源码。你可以自己用数组记录成员

  • chris0753 2020-04-09

    $socket->on('disconnect', function () use($socket) {
    if(!isset($socket->uid))
    {
    return;
    }
    global $uidConnectionMap, $sender_io;
    if(--$uidConnectionMap[$socket->uid] <= 0)
    {
    unset($uidConnectionMap[$socket->uid]);
    }
    });

    请问加入房间的uid可以通过这个方法删除么?

年代过于久远,无法发表回答
×
🔝