问一个很低级的问题,关于用户组的

flock

关于用户分组

$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);
    });

这是我监控登陆的函数,首先我登陆传过来的$uid是一个字符串,格式是1(用户ID),5t(房间ID,要用来当做组名),想问的是,join这个是加入组吧,组名是我传的$uid1,也就是5t,那下面的 $socket->uid = $uid;是做什么用的,我想给房间5t发送消息是成功的,我想给单独的一个uid也就是1,5t发送消息,显示OK,但是在实际上并没有收到,感觉对这个分组还不是很理解,求各位大佬帮帮忙

2740 3 0
3个回答

flock

先感谢walkor大神,问题是解决了,但是不知道有没有理解错。首先我是加了一个$socket->join($uid1);
也就是把用户ID也当成一个组,然后发送时发送这个$uid1,也就是用户ID就能单独给这个用户发送。join是加入组,$socket->uid = $uid,这个就不是很理解了

  • 暂无评论
walkor

$socket->uid = $uid 是记录下当前这个$socket是属于哪个uid,如果这个$socket断开,则需要把它从$uidConnectionMap删除

  • 暂无评论
年代过于久远,无法发表回答
🔝