/** * 向群中添加用户、删除用户 */ public static function setGroupMembers($paramArr) { $options = array('master' => '', 'uuid' => '', 'type' => 'add', 'userList' => array(), 'joinTime' => time()); if (is_array($paramArr)) { $options = array_merge($options, $paramArr); } extract($options); if (!is_array($userList)) { return false; } $key = self::groupMembersKey($master, $uuid); if (!$key) { return false; } foreach ($userList as $user) { if ($type === 'add') { RedisModel::hashSet(self::$redisServer, $key, $user, $joinTime, 0); } elseif ($type === 'del') { RedisModel::hashDel(self::$redisServer, $key, $user); } } return RedisModel::exists(self::$redisServer, $key); }
<?php //test文件,压入数据的时候可以参考 use Workerman\Autoloader; require_once '../../../Workerman/Autoloader.php'; Autoloader::setRootPath("../../"); //消息队列,向队列中rpush //require 'Redis.php'; //use \Vendors\RedisQuene\Redisq; use Vendors\Redis\RedisModel; //RedisModel::set('webChat', 'aaa', 'bbbbgggggg'); // RedisModel::hashSet('webChat', 'aaa', 'bbbbgggggg', 'dddd'); // RedisModel::hashSet('webChat', 'USER_ONLINE_LIST', 'bbbbggg', 'dddd'); // $res = RedisModel::hashGet('webChat', 'aaa'); // var_dump($res);die; $res = RedisModel::hashDel('webChat', 'wangjx:unread:msg', 'bbb'); var_dump($res); die; if (null === $res) { var_dump($res); } else { var_dump(2222222); } die; $a = substr(str_shuffle("qwertyuiopasdfghjklzxcvbnm"), 0, 4); $b = substr(str_shuffle("qwertyuiopasdfghjklzxcvbnm"), 0, 4); $messageVal = array('fromuser' => 'cuihb', 'touser' => 'xieyx', 'message' => $a . $b, 'time' => time()); Redisq::rpush(array('serverName' => 'webChat', 'key' => 'chat:message:quene', 'value' => serialize($messageVal))); $long = Redisq::getSize(array('serverName' => 'webChat', 'key' => 'chat:message:quene')); var_dump($long); $arr = Redisq::range(array('serverName' => 'webChat', 'key' => 'chat:message:quene', 'offset' => 0, 'len' => -1));
/** * 不允许多用户登录 * 剔除存储用户 */ public static function notAllowMoreClient($clientList, $clientName) { if (is_array($clientList)) { $unsetKey = array_keys($clientList, $clientName); if ($unsetKey) { Gateway::sendToAll(json_encode(array('type' => 'error', 'info' => 'loginconflict', 'msg' => '您已在另一客户端登陆')), $unsetKey); foreach ($unsetKey as $unkey) { unset($clientList[$unkey]); //下线用户 Gateway::closeClient($unkey); //删除存储用户 RedisModel::hashDel('webChat', Storekey::USER_ONLINE_LIST, $unkey); } } } return; }
/** * 用户点击对话时删除该对话的离线消息 */ public static function delOneItemUnreadMsg($username, $chatid) { if (!$username || !$chatid) { return false; } return RedisModel::hashDel(self::$redisServer, $username . \Config\St\Storekey::UNREAD_MSG, $chatid); }