什麼是透明通道

什麼是透明通道,如何使用?

透明通道顧名思義就是AnyChatSDK爲上層應用提供的一個傳輸數據的通道,由於AnyChat SDK並不關心所傳輸的內容,即所傳輸的數據相對於SDK來說是透明的,便稱爲透明通道


上層應用可以利用SDK提供的透明通道來擴展業務,傳輸的內容沒有限制,可以爲任意數據類型緩衝區,單次傳輸大小限制爲1000字節,如可以利用透明通道傳輸業務上自定義的指令,接收方收到數據後,會產生透明通道數據回調,在回調函數裏面進行指令的解析,並進行對應的業務邏輯處理。


V2.8.7之前的版本,只能在當前房間內的任意兩個用戶間,或是向房間內的所有用戶廣播數據。


2.8.7版本開始,便可以在兩個成功登錄的用戶之間,用透明通道接口傳輸自定義的數據,每次傳輸數據的大小爲1000字節,如果自己在房間裏面,還可以利用透明通道向房間的所有用戶廣播數據,詳細信息可參考:BRAC_TransBuffer


如果在房間中任意兩個用戶間需要傳輸大量的緩衝區數據,則可使用擴展接口:BRAC_TransBufferExSDK內部會自動完成對大緩衝區的分包、組包、校驗工作。


透明通道數據回調函數

typedef void (CALLBACK *BRAC_TransBuffer_CallBack)(DWORD dwUserid, LPBYTE lpBuf, DWORD dwLen, LPVOIDlpUserValue);

參數:

dwUserid用戶ID,指示發送用戶

lpBuf緩衝區地址

dwLen緩衝區大小

lpUserValue用戶自定義參數,在設置回調函數時傳入


備註:

當收到其它用戶使用BRAC_TransBuffer方法發送的數據時,接收方將會觸發該回調函數。

由於該函數傳遞的數據是一個與本SDK無關的緩衝區(由上層應用自己填充內容),相對於本SDK來說是透明的,故稱爲透明通道,利用該通道,可以向當前房間內的任何用戶傳輸上層應用自定義的數據。


什麼是回調函數及其主要用途?

一、什麼回調函數

簡單的說回調函數就是函數指針的一種用法,當發生某種事件時,系統或其他函數將會自動調用你定義的一段函數。

從另一個角度來看問題,如果把函數分層的話,上層調下層的叫調用,下層調上層的叫回調

使用回調函數實際上就是在調用某個函數(通常是API函數)時,將自己的一個函數(這個函數爲回調函數)的地址作爲參數傳遞給那個函數。而那個函數在需要的時候,利用傳遞的地址調用回調函數,這時你可以利用這個機會在回調函數中處理消息或完成一定的操作。至於如何定義回調函數,跟具體使用的API函數有關,一般在幫助中有說明回調函數的參數和返回值等。C++中一般要求在回調函數前加CALLBACK(相當於FAR PASCAL),這主要是說明該函數的調用方式。


也可以這樣,更容易理解:回調函數就好像是一箇中斷處理函數,系統在符合你設定的條件時自動調用。爲此,你需要做三件事:

1、聲明;

2、定義;

3、設置觸發條件,就是在你的函數中把你的回調函數名稱轉化爲地址作爲一個參數,以便於底層系統調用。


二、回調函數的作用

因爲可以把調用者與被調用者分開。調用者不關心誰是被調用者,所有它需知道的,只是存在一個具有某種特定原型、某些限制條件(如返回值爲int)的被調用函數。


AnyChatPlatform Core SDK中我們較多的應用了回調函數接口,其主要目的便是實現AnyChat SDK的靈活性、可定製性以及通用性等特性。在回調函數使用過程中遇到疑問,可參考我們SDK包中提供的Demo程序源代碼,裏面有回調函數非常詳細的聲明、定義以及使用的代碼。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章