音视频 开发技术 在线好友解决方案

原创 2014年08月14日 10:14:20

     目前的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. 

4. // 获取用户好友ID列表

5. BRAC_API DWORD BRAC_GetUserFriends(LPDWORD lpUserIDArray, DWORD& dwUserNum);

6. // 获取好友在线状态

7. BRAC_API DWORD BRAC_GetFriendStatus(DWORD dwFriendUserId, DWORD& dwStatus);

8. // 获取用户分组ID列表

9. BRAC_API DWORD BRAC_GetUserGroups(LPDWORD lpGroupIDArray, DWORD& dwGroupNum);

10. // 获取分组下面的好友列表

11. BRAC_API DWORD BRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD& dwUserNum);

12. // 获取用户信息

13. BRAC_API DWORD BRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORD dwLen);

14. // 获取用户分组名称

15. 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. 

5. #define BRAS_USERINFO_CTRLCODE_ADDGROUP         20        ///< 添加用户分组,wParam为分组Id,lpStrValue为分组名称

6. #define BRAS_USERINFO_CTRLCODE_DELGROUP         21        ///< 删除用户分组,wParam为分组Id

7. #define BRAS_USERINFO_CTRLCODE_ADDFRIEND        22        ///< 添加用户好友,wParam为好友Id

8. #define BRAS_USERINFO_CTRLCODE_DELFRIEND        23        ///< 删除用户好友,wParam为好友Id

9. #define BRAS_USERINFO_CTRLCODE_SETGROUPRELATION 24        ///< 设置好友与分组的关联关系,wParam为分组Id,lParam为好友Id,表示好友属于某个分组

10. 

11. 

12. // 设置用户的详细信息

13. BRAS_API DWORD BRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORD dwFlags=0);

14. // 获取用户的详细信息

15. BRAS_API DWORD BRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORD dwSize);

16. // 用户信息控制

17. 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);

复制代码

 

一站式应用实时互动功能的音视频解决方案

一站式应用实时互动功能的音视频解决方案   云智真音视频SDK的技术积累和基础数据通信研究,一个极简音视频 SDK开发包,让开发者一次实现所有音视频实时功能, 全平台支持和互通,API 接口丰富,灵活...
  • ucvive
  • ucvive
  • 2017年09月19日 22:46
  • 349

音视频技术 视频开发参考资料

本文阐述视频聊天网站相关的技术、发展过程以及未来的发展趋势。我长时间从事外包业务开发和技术开发的,从客户那里了解到了很多的视频聊天网站相关的需求,经过自己长时间对视频聊天网站运营模式、盈利模式、系统架...
  • little_rui
  • little_rui
  • 2015年01月21日 09:28
  • 931

各大SDK音视频解决方案对比

目前音视频开发市场琳琅满目,市场占有率最大的当属于RTX,视高等大公司。但是随着科技的日新月异,一些新型的公司逐渐崭露头角,市场上用户群体的多样化,,也将使用户的选择变得多样性,同时带来的是音视频厂商...
  • little_rui
  • little_rui
  • 2014年10月22日 17:38
  • 2951

iOS音视频SDK开发技术解决方案

随着iOS的强势面世,伴随着其出色的应用,一大堆开发人员在捣鼓IOS平台的开发,而基于iOS的音视频二次开发应用也为更多的程序员猛攻猛打。相信大家也使用过QQ的语音视频对话功能,但是不知道大家有没有试...
  • little_rui
  • little_rui
  • 2015年01月09日 10:06
  • 1313

从开发小白到音视频专家

作者:卢俊,七牛云客户端团队技术负责人。拥有丰富的音视频领域的开发和实战经验,先后开发过 Android 播放 SDK、Android 推流 SDK、短视频 SDK,并主导了七牛连麦系统的设计和实现。...
  • dev_csdn
  • dev_csdn
  • 2017年12月07日 10:53
  • 7000

音视频解决方案开源项目

开源项目 live555 ffmpeg vlc mediainfo
  • niwenxian1
  • niwenxian1
  • 2016年02月29日 14:12
  • 983

从零开始学习音视频编程技术(一) 视频格式讲解

原文地址:http://blog.yundiantech.com/?log=blog&id=4  所谓视频,其实就是将一张一张的图片连续的放出来,就像放幻灯片一样,由于人眼的惰性,因此只要图片的...
  • qq214517703
  • qq214517703
  • 2016年09月16日 09:33
  • 3267

音视频解决方案中的即时通讯开发技术

即时通讯开发,也叫音视频即时通信开发。随着互联网的发展,人们之间的交流逐步从电话移向网络。每天都有相当多的人在使用各种网络交流工具,如Anychat,腾讯QQ,ICQ,MSN,新浪微博。   可以看...
  • bairui_Allen
  • bairui_Allen
  • 2013年02月05日 12:32
  • 423

音视频技术学习总结入门

http://blog.csdn.net/leixiaohua1020/article/details/18893769 一直想把视音频编解码技术做一个简单的总结,可是苦于时间不充裕,一直没...
  • coloriy
  • coloriy
  • 2016年05月13日 15:40
  • 1601

Spark 共同好友解决方案:求大量集合的两两交集

Hadoop/MapReduce 共同好友解决方案:求大量集合的两两交集 import org.apache.spark.SparkConf import org.apache....
  • csj941227
  • csj941227
  • 2017年11月16日 16:12
  • 264
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:音视频 开发技术 在线好友解决方案
举报原因:
原因补充:

(最多只允许输入30个字)