admin 发表于 2017-12-22 21:07:47

2017-12-22 开放同步数据传输接口,确认数据已送达

AnyChat提供了“透明通道”(API:BRAC_TransBuffer)用于传输上层业务的缓冲区数据,该接口为异步调用,即:API调用完成便立即返回,不能确认数据是否已经送达目标用户。

在一些业务场景中,需要确认所发送的数据是否已经送达目标用户,TransBuffer接口便不能满足需求。

AnyChat新版本(r7186)开放了同步数据传输接口,数据送达对方后,函数调用才返回,中间处于阻塞状态,若对方没有响应,则超过设定的超时时间也会返回,可根据函数的返回值(errorcode)来确认数据是否已送达目标用户。

新增接口及事件常量:
#define ANYCHAT_SDKCTRL_USERBUFFER                        3      ///< 用户缓冲区传输控制

#define ANYCHAT_CORESDKEVENT_USERBUFFER                35      ///< 用户缓冲区事件

示例代码:

var result = BRAC_SDKControl(ANYCHAT_SDKCTRL_USERBUFFER, JsonBuf);

JsonBuf为Json缓冲区,包含目标用户参数、缓冲区内容参数等,相关key定义如下:
"taruserid":目标用户ID,整型值;
"tarstruserid":目标用户ID,字符串;
"timeout":指令超时时间,单位:ms,默认为2000ms
"databuf":数据缓冲区,最大长度8192字节

其中:
"databuf"为必须存在的key;
“taruserid”和"tarstruserid"二选一即可,即:通过整型的taruserid可以将缓冲区传给对方,通过字符串类型的tarstruserid也可以将缓冲区传给对方;
"timeout"设置为0时,表示不等待,直接返回,异步发送,不保障消息可达,和透明通道接口(TransBuffer)一样;

返回值(result):
errorcode = 0,      发送成功;
errorcode = 5,      发送失败,内部异常;
errorcode = 21,      发送失败,参数设置有误,json格式不正确,或是没有包含必须的json key字段;
errorcode = 62,      发送失败,缓冲区超过最大长度;
errorcode = 100,      发送失败,等待超时;
errorcode = 100102,发送失败,目标用户不在线;

接收方收到数据后,将触发异步事件:BRAC_CoreSDKEvent_CallBack,其中dwEventType = ANYCHAT_CORESDKEVENT_USERBUFFER,lpEventJsonStr = 发送时的JsonBuf。

在接收方事件的jsonbuf中,内核会自动增加发送者的key,用于标识发送者的身份:
"srcuserid":发送者用户ID,整型值;
"srcstruserid":发送者用户ID,字符串;

备注:发送端、接收端以及服务器均需要使用最新版本。




页: [1]
查看完整版本: 2017-12-22 开放同步数据传输接口,确认数据已送达