什么是透明通道

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

透明通道顾名思义就是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程序源代码,里面有回调函数非常详细的声明、定义以及使用的代码。



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