5.3 KiB
5.3 KiB
OpenIM PHP SDK
基于 OpenIM 的 PHP SDK
安装
composer require MrYzYs/OpenImSdk
配置
$config = [
'host' => 'http://127.0.0.1:10002', // OpenIM API地址
'secret' => 'openIM123', // OpenIM密钥
];
基本使用
初始化客户端
// 使用文件缓存(默认)
$IM = new OpenImSdk\Client($config);
// 使用Redis缓存 (phpredis)
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$IM = new OpenImSdk\Client($config, $redis);
// 使用Redis缓存 (predis)
$redis = new Predis\Client([
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => 6379,
]);
$IM = new OpenImSdk\Client($config, $redis);
// 指定文件缓存目录
$IM = new OpenImSdk\Client($config, null, '/path/to/cache');
认证管理
// 用户注册
$result = $IM->auth->userRegister('user123', '测试用户', 'https://example.com/avatar.jpg');
// 强制登出
$logout = $IM->auth->forceLogout('user123');
// 解析token
$tokenInfo = $IM->auth->parseToken($userToken);
用户管理
// 获取用户列表
$users = $IM->user->getUsers($adminToken);
// 获取用户在线状态
$onlineStatus = $IM->user->getUsersOnlineStatus($adminToken, ['user123', 'user456']);
// 更新用户信息
$updateUser = $IM->user->updateUserInfo($adminToken, 'user123', [
'nickname' => '新昵称',
'faceURL' => 'https://example.com/new-avatar.jpg'
]);
消息管理
// 发送消息
$sendMsg = $IM->message->sendMsg(
$adminToken,
'admin', // 发送者ID
'user123', // 接收者ID
'', // 群组ID(单聊时为空)
'管理员', // 发送者昵称
'https://example.com/admin-avatar.jpg', // 发送者头像
1, // 发送者平台ID
['text' => '你好,这是一条测试消息'], // 消息内容
101, // 消息类型(101为文本消息)
1 // 会话类型(1为单聊)
);
// 撤回消息
$revokeMsg = $IM->message->revokeMessage(
$adminToken,
'single_user123', // 会话ID
'123456', // 消息seq
'user123' // 用户ID
);
会话管理
// 获取用户分页会话列表
$conversations = $IM->conversation->getOwnerConversation(
$adminToken,
'user123', // 用户ID
1, // 页码
20 // 每页数量
);
// 获取排序的会话列表
$sortedConversations = $IM->conversation->getSortedConversationList(
$adminToken,
'user123' // 用户ID
);
好友管理
// 批量导入好友
$importFriend = $IM->friend->importFriend(
$adminToken,
'user123', // 用户ID
['user456', 'user789'] // 好友ID列表
);
// 获取好友列表
$friendList = $IM->friend->getFriendList(
$adminToken,
'user123' // 用户ID
);
// 检查是否为好友
$isFriend = $IM->friend->isFriend(
$adminToken,
'user123', // 用户ID1
'user456' // 用户ID2
);
群组管理
// 创建群组
$createGroup = $IM->group->createGroup(
$adminToken,
'user123', // 群主ID
[], // 普通成员ID列表
[], // 管理员ID列表
'测试群组', // 群名称
'', // 群ID(可选)
'https://example.com/group-avatar.jpg', // 群头像
'群简介', // 群简介
'群公告' // 群公告
);
// 邀请用户加入群组
$inviteToGroup = $IM->group->inviteUserToGroup(
$adminToken,
'group123', // 群组ID
'user123', // 邀请者ID
['user456', 'user789'] // 被邀请的用户ID列表
);
// 获取群成员列表
$groupMembers = $IM->group->getGroupAllMemberList(
$adminToken,
'group123', // 群组ID
0, // 偏移量
100 // 数量
);
// 申请加入群组
$joinGroup = $IM->group->joinGroup(
$userToken, // 用户token
'group123', // 群组ID
'我想加入这个群组' // 申请消息
);
// 处理群组申请
$handleApplication = $IM->group->groupApplicationResponse(
$adminToken,
'group123', // 群组ID
'user456', // 申请者ID
'user123', // 处理者ID
1, // 处理结果,1同意,2拒绝
'欢迎加入' // 处理消息
);
// 踢出群成员
$kickMember = $IM->group->kickGroupMember(
$adminToken,
'group123', // 群组ID
'user123', // 踢出者ID
['user456'], // 被踢出的用户ID列表
'违反群规' // 踢出原因
);
// 转让群主
$transferOwner = $IM->group->transferGroupOwner(
$adminToken,
'group123', // 群组ID
'user123', // 原群主ID
'user456' // 新群主ID
);
目录结构
src/
├── Api/ # API接口类
│ ├── Auth.php # 认证相关API
│ ├── Conversation.php # 会话相关API
│ ├── Friend.php # 好友相关API
│ ├── Group.php # 群组相关API
│ ├── Message.php # 消息相关API
│ └── User.php # 用户相关API
├── Core/ # 核心类
│ ├── Config.php # 配置类
│ ├── TokenManager.php # Token管理类
│ ├── Url.php # URL管理
│ ├── Utils.php # 工具类
│ └── Validator.php # 验证器
├── Exception/ # 异常处理
│ └── ValidatorException.php # 验证异常
└── Client.php # 客户端入口
许可协议: GPL-V3