什么是透明通道

什么是透明通道,如何使用?
“透明通道”顾名思义就是AnyChat SDK为上层应用提供的一个传输数据的通道,由于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, LPVOID lpUserValue);
参数:
dwUserid: 用户ID,指示发送用户
lpBuf: 缓冲区地址
dwLen: 缓冲区大小
lpUserValue: 用户自定义参数,在设置回调函数时传入

备注:
       当收到其它用户使用“ BRAC_TransBuffer”方法发送的数据时,接收方将会触发该回调函数。
       由于该函数传递的数据是一个与本SDK无关的缓冲区(由上层应用自己填充内容),相对于本SDK来说是透明的,故称为透明通道,利用该通道,可以向当前房间内的任何用户传输上层应用自定义的数据。

什么是回调函数及其主要用途?
一、什么回调函数
简单的说回调函数就是函数指针的一种用法,当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。
从另一个角度来看问题,如果把函数分层的话,上层调下层的叫“调用”,下层调上层的叫“回调”。
使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数,跟具体使用的API函数有关,一般在帮助中有说明回调函数的参数和返回值等。C++中一般要求在回调函数前加CALLBACK(相当于FAR   PASCAL),这主要是说明该函数的调用方式。

也可以这样,更容易理解:回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。为此,你需要做三件事:
1、声明;
2、定义;
3、设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于底层系统调用。

二、回调函数的作用
因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用函数。

在AnyChat Platform Core SDK中我们较多的应用了回调函数接口,其主要目的便是实现AnyChat SDK的灵活性、可定制性以及通用性等特性。在回调函数使用过程中遇到疑问,可参考我们SDK包中提供的Demo程序源代码,里面有回调函数非常详细的声明、定义以及使用的代码。

猜你喜欢

转载自songqiuling.iteye.com/blog/1955637