关于用户分组
$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,但是在实际上并没有收到,感觉对这个分组还不是很理解,求各位大佬帮帮忙
https://github.com/walkor/phpsocket.io/tree/master/docs/zh
看下文档
先感谢walkor大神,问题是解决了,但是不知道有没有理解错。首先我是加了一个$socket->join($uid1);
也就是把用户ID也当成一个组,然后发送时发送这个$uid1,也就是用户ID就能单独给这个用户发送。join是加入组,$socket->uid = $uid,这个就不是很理解了
$socket->uid = $uid 是记录下当前这个$socket是属于哪个uid,如果这个$socket断开,则需要把它从$uidConnectionMap删除