zoukankan      html  css  js  c++  java
  • 视频对讲SDK 大厅好友解决方案

     

         目前的anychat只提供了房间内用户列表、用户进出房间的业务逻辑,新版本将增强对上层业务逻辑的支持,提供完整的大厅好友解决方案。

    大厅好友解决方案包括:
    1、业务服务器可以设置用户的好友列表,客户端可以获得好友列表,不需要进入房间;
    2、客户端可以获得好友上线、下线的状态通知;
    3、业务服务器可以自定义设置用户的任意属性(如名称、签名、性别、备注等)并能同步到客户端,客户端可以获取业务服务器自定义的用户属性;

    客户端新增API接口:

    1. #define WM_GV_USERINFOUPDATE   WM_GV + 16                ///< 用户信息更新通知,wParam(INT)表示用户ID号,lParam(INT)表示更新类别
    2. #define WM_GV_FRIENDSTATUS     WM_GV + 17                ///< 好友在线状态变化,wParam(INT)表示好友用户ID号,lParam(INT)表示用户的当前活动状态:0 离线, 1 上线
    3. // 获取用户好友ID列表
    4. BRAC_API DWORD BRAC_GetUserFriends(LPDWORD lpUserIDArray, DWORD& dwUserNum);
    5. // 获取好友在线状态
    6. BRAC_API DWORD BRAC_GetFriendStatus(DWORD dwFriendUserId, DWORD& dwStatus);
    7. // 获取用户分组ID列表
    8. BRAC_API DWORD BRAC_GetUserGroups(LPDWORD lpGroupIDArray, DWORD& dwGroupNum);
    9. // 获取分组下面的好友列表
    10. BRAC_API DWORD BRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD& dwUserNum);
    11. // 获取用户信息
    12. BRAC_API DWORD BRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORD dwLen);
    13. // 获取用户分组名称
    14. BRAC_API DWORD BRAC_GetGroupName(DWORD dwGroupId, TCHAR* lpGroupName, DWORD dwLen);

    复制代码

    服务端新增API接口:

    1. // 用户信息控制类型定义(API:BRAS_UserInfoControl 传入参数、OnUserInfoControl回调参数)
    2. #define BRAS_USERINFO_CTRLCODE_KICKOUT          1         ///< 将指定用户从系统中踢掉
    3. #define BRAS_USERINFO_CTRLCODE_SYNCDATA         2         ///< 将指定用户的数据同步给客户端
    4. #define BRAS_USERINFO_CTRLCODE_ADDGROUP         20        ///< 添加用户分组,wParam为分组Id,lpStrValue为分组名称
    5. #define BRAS_USERINFO_CTRLCODE_DELGROUP         21        ///< 删除用户分组,wParam为分组Id
    6. #define BRAS_USERINFO_CTRLCODE_ADDFRIEND        22        ///< 添加用户好友,wParam为好友Id
    7. #define BRAS_USERINFO_CTRLCODE_DELFRIEND        23        ///< 删除用户好友,wParam为好友Id
    8. #define BRAS_USERINFO_CTRLCODE_SETGROUPRELATION 24        ///< 设置好友与分组的关联关系,wParam为分组Id,lParam为好友Id,表示好友属于某个分组
    9. // 设置用户的详细信息
    10. BRAS_API DWORD BRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORD dwFlags=0);
    11. // 获取用户的详细信息
    12. BRAS_API DWORD BRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORD dwSize);
    13. // 用户信息控制
    14. BRAS_API DWORD BRAS_UserInfoControl(DWORD dwUserId, DWORD dwCtrlCode, DWORD wParam=0, DWORD lParam=0, LPCTSTR lpStrValue=NULL);

    复制代码

    服务器端业务逻辑处理流程

    在用户登录成功事件中设置用户的好友列表、分组列表、用户属性,并发送数据同步指令:

    1. // 用户登录成功回调函数定义
    2. typedef void (CALLBACK* BRAS_OnUserLoginAction_CallBack)(DWORD dwUserId, LPCTSTR szUserName, DWORD dwLevel, LPCTSTR szIpAddr, LPVOID lpUserValue);

    复制代码

    一、添加用户分组

    1. DWORD dwGroupId = 1;
    2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP,  dwGroupId, 0, "我的好友");
    3. dwGroupId = 2;
    4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDGROUP,  dwGroupId, 0, "公司同事");

    复制代码

    二、添加用户好友

    1. DWORD dwFriendUserId = 10010;
    2. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND,  dwFriendUserId);
    3. dwFriendUserId = 10011;
    4. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_ADDFRIEND,  dwFriendUserId );

    复制代码

    三、设置好友与分组的关系(即好友属于哪一个分组)

    1. DWORD dwGroupId = 1;
    2. DWORD dwFriendUserId = 10010;
    3. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION,  dwGroupId, dwFriendUserId);
    4. dwGroupId = 2;
    5. dwFriendUserId = 10011;
    6. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SETGROUPRELATION,  dwGroupId, dwFriendUserId);

    复制代码

    四、设置用户信息(用户资料)

    1. BRAS_SetUserInfo(dwUserId, 1, "我的签名");
    2. BRAS_SetUserInfo(dwUserId, 2, "020-85276986");
    3. ……

    复制代码

    五、将前面设置的资料同步给客户端

    1. BRAS_UserInfoControl(dwUserId, BRAS_USERINFO_CTRLCODE_SYNCDATA,  0, 0);

    复制代码

  • 相关阅读:
    Linux-shell-算术运算{expr、bc、dc、(( ))和[ ]}
    [SHELL]:let 命令详解
    23-tcp协议——TIME_WAIT状态和FIN_WAIT2状态
    ethtool -p eth0 物理口一个灯在不停的闪烁
    PXE
    UID, EUID, SUID, FSUID
    echo $[1 + 2] shell中 $[] 在bash中同$(()),用于算术计算
    Cocos2d入门--3-- 向量的应用
    Cocos2d入门--2-- 三角函数的应用
    Cocos2d入门--1-- 初涉相关属性或代码
  • 原文地址:https://www.cnblogs.com/megan812/p/3911946.html
Copyright © 2011-2022 走看看