设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 4197|回复: 0
打印 上一主题 下一主题

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

[复制链接]

249

主题

2967

帖子

9108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9108
跳转到指定楼层
楼主
发表于 2017-12-22 21:07:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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,字符串;

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




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-11-22 19:03 , Processed in 0.106169 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表