即時通訊 好友名單商務邏輯詳解

來源:互聯網
上載者:User

標籤:即時通訊   好友名單   音視頻解決方案   移動視頻開發   音視頻sdk開發包   

在IM通訊中,通常需要管理自己的小夥伴,經常聯絡的,重要的使用者需要標識在同一使用者列表裡,方便自己快速聯絡以及查看社交動向更新。那麼如何可以做到類似QQ的好友名單功能呢,如

大廳好友方案套件括:
1、商務服務器可以設定使用者的好友名單,用戶端可以獲得好友名單,不需要進入房間;
2、用戶端可以獲得好友上線、下線的狀態通知;
3、商務服務器可以自訂設定使用者的任意屬性(如名稱、簽名、性別、備忘等)並能同步到用戶端,用戶端可以擷取商務服務器自訂的使用者屬性;

下面以一款在市面(佰銳上科技)功能強大的SDK為例做功能實現說明,

用戶端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 DWORDBRAC_GetGroupFriends(DWORD dwGroupId, LPDWORD lpUserIDArray, DWORD&dwUserNum);

12.  //擷取使用者資訊

13.  BRAC_API DWORDBRAC_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoName, DWORDdwLen);

14.  //擷取使用者分組名稱

15.  BRAC_API DWORD BRAC_GetGroupName(DWORDdwGroupId, 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 DWORDBRAS_SetUserInfo(DWORD dwUserId, DWORD dwInfoId, LPCTSTR lpInfoValue, DWORDdwFlags=0);

14.  //擷取使用者的詳細資料

15.  BRAS_API DWORDBRAS_GetUserInfo(DWORD dwUserId, DWORD dwInfoId, TCHAR* lpInfoValue, DWORDdwSize);

16.  //使用者資訊控制

17.  BRAS_API DWORD BRAS_UserInfoControl(DWORDdwUserId, DWORD dwCtrlCode, DWORD wParam=0, DWORD lParam=0, LPCTSTRlpStrValue=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);

複製代碼

即時通訊 好友名單商務邏輯詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.