IM中好友管理解决方案
2024-08-05 12:45:17 216人阅读
客户端处理接口:
#define WM_GV_USERINFOUPDATE WM_GV + 16 ///< 用户信息更新通知,wParam(INT)表示用户ID号,lParam(INT)表示更新类别
#define WM_GV_FRIENDSTATUS WM_GV + 17 ///< 好友在线状态变化,wParam(INT)表示好友用户ID号,lParam(INT)表示用户的当前活动状态:0 离线, 1 上线
// 获取用户好友ID列表
BRAC_API DWORD BRAC_GetUserFriends(LPDWORD lpUserIDArray, DWORD& dwUserNum);
// 获取好友在线状态
BRAC_API DWORD BRAC_GetFriendStatus(DWORD dwFriendUserId, DWORD& dwStatus);
// 获取用户分组ID列表
BRAC_API DWORD BRAC_GetUserGroups(LPDWORD lpGroupIDArray, DWORD& dwGroupNum);
// 获取分组下面的好友列表
BRAC_API DWORD BRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD& dwUserNum);
// 获取用户信息
BRAC_API DWORD BRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORD dwLen);
// 获取用户分组名称
BRAC_API DWORD BRAC_GetGroupName(DWORD dwGroupId, TCHAR* lpGroupName, DWORD dwLen);
复制代码 服务端新增API接口:// 用户信息控制类型定义(API:BRAS_UserInfoControl 传入参数、OnUserInfoControl回调参数)
#define BRAS_USERINFO_CTRLCODE_KICKOUT 1 ///< 将指定用户从系统中踢掉
#define BRAS_USERINFO_CTRLCODE_SYNCDATA 2 ///< 将指定用户的数据同步给客户端
#define BRAS_USERINFO_CTRLCODE_ADDGROUP 20 ///< 添加用户分组,wParam为分组Id,lpStrValue为分组名称
#define BRAS_USERINFO_CTRLCODE_DELGROUP 21 ///< 删除用户分组,wParam为分组Id
#define BRAS_USERINFO_CTRLCODE_ADDFRIEND 22 ///< 添加用户好友,wParam为好友Id
#define BRAS_USERINFO_CTRLCODE_DELFRIEND 23 ///< 删除用户好友,wParam为好友Id
#define BRAS_USERINFO_CTRLCODE_SETGROUPRELATION 24 ///< 设置好友与分组的关联关系,wParam为分组Id,lParam为好友Id,表示好友属于某个分组
// 设置用户的详细信息
BRAS_API DWORD BRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORD dwFlags=0);
// 获取用户的详细信息
BRAS_API DWORD BRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORD dwSize);
// 用户信息控制
BRAS_API DWORD BRAS_UserInfoControl(DWORD dwUserId, DWORD dwCtrlCode, DWORD wParam=0, DWORD lParam=0, LPCTSTR lpStrValue=http://www.mamicode.com/NULL);
复制代码 |
服务器端业务逻辑处理流程
在用户登录成功事件中设置用户的好友列表、分组列表、用户属性,并发送数据同步指令:// 用户登录成功回调函数定义
typedef void (CALLBACK* BRAS_OnUserLoginAction_CallBack)(DWORD dwUserId, LPCTSTR szUserName, DWORD dwLevel, LPCTSTR szIpAddr, LPVOID lpUserValue);
复制代码 一、添加用户分组DWORD dwGroupId = 1;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP, dwGroupId, 0, "我的好友");
dwGroupId = 2;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP, dwGroupId, 0, "公司同事");
复制代码 二、添加用户好友DWORD dwFriendUserId = 10010;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND, dwFriendUserId);
dwFriendUserId = 10011;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND, dwFriendUserId );
复制代码 三、设置好友与分组的关系(即好友属于哪一个分组)DWORD dwGroupId = 1;
DWORD dwFriendUserId = 10010;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION, dwGroupId, dwFriendUserId);
dwGroupId = 2;
dwFriendUserId = 10011;
BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION, dwGroupId, dwFriendUserId);
复制代码 四、设置用户信息(用户资料)BRAS_SetUserInfo(dwUserId, 1, "我的签名");
BRAS_SetUserInfo(dwUserId, 2, "020-85276986");
……
复制代码 五、将前面设置的资料同步给客户端BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SYNCDATA, 0, 0);
复制代码 |
IM中好友管理解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉:
投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。