什麼是透明通道,如何使用?
“透明通道”顧名思義就是AnyChatSDK爲上層應用提供的一個傳輸數據的通道,由於AnyChat SDK並不關心所傳輸的內容,即所傳輸的數據相對於SDK來說是“透明”的,便稱爲“透明通道”。
上層應用可以利用SDK提供的透明通道來擴展業務,傳輸的內容沒有限制,可以爲任意數據類型緩衝區,單次傳輸大小限制爲1000字節,如可以利用透明通道傳輸業務上自定義的指令,接收方收到數據後,會產生透明通道數據回調,在回調函數裏面進行指令的解析,並進行對應的業務邏輯處理。
V2.8.7之前的版本,只能在當前房間內的任意兩個用戶間,或是向房間內的所有用戶廣播數據。
自2.8.7版本開始,便可以在兩個成功登錄的用戶之間,用透明通道接口傳輸自定義的數據,每次傳輸數據的大小爲1000字節,如果自己在房間裏面,還可以利用透明通道向房間的所有用戶廣播數據,詳細信息可參考:BRAC_TransBuffer
如果在房間中任意兩個用戶間需要傳輸大量的緩衝區數據,則可使用擴展接口:BRAC_TransBufferEx,SDK內部會自動完成對大緩衝區的分包、組包、校驗工作。
透明通道數據回調函數
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程序源代碼,裏面有回調函數非常詳細的聲明、定義以及使用的代碼。