一、服务器接口说明 | 二、客户端接口说明 |
一、智能通讯服务器接口说明
SDK包括include、64(64位库)、32(32位库)文件夹
使用时需要包含app/adcloud_app.hpp和链接libadcloud_app.so
Start
class IAppListener:
● L_ClientIn(const ClientId& id,const std::string& addr)
● L_ClientOut(const ClientId& id)L_ClientData
● L_ClientData(const ClientId& id,void* buf,int size)
● L_AppData(const std::string& appid,void*buf,int size)
class IApp:
● SendToClient(const ClientId& id,void* buf,int size)
● CloseClient(const ClientId& id)
● AddScope(const std::string& scope,const ClientId& id)
● DelScope(const std::string& scope,const ClientId& id)
● SendToScope(const std::string& scope,void* buf,int size)
● Broadcast(void*buf,int size)
● SendToApp(const std::string& appid,void*buf,int size)
IApp* Start( const std::string& appid,
const std::string& password,
const std::vector<std::string>& proxy_addrs,
IAppListener* lis,
int* error );
开启与通讯库的连接,返回通讯库对象指针,
参数说明:
appid: 通讯库ID,由云通讯库生成的唯一标识
password:通讯库密码,由用户设置
proxy_addrs:通讯库服务器集群,每一项有IP:PORT组成
Lis: 服务器监听指针,监听和接受客户端或者其他应用数据
error :错误码信息,用于返回服务器中的错误
使用方法:
IAppListener_app* lis; //IAppListener_app 继承自IAppListener
Int err;
adcloud::app::IApp* app_;
app_ = adcloud::app::Start("appid1","123456",
"service.ics.aodianyun.com:8365",lis,&err);//返回通讯库对象
IAppListener:
服务器监听类,负责监听客户端和其他app的消息,用户使用时只要从该类派生出子类,并实现被回调的方法即可
void L_ClientIn(const ClientId& id,const std::string& addr);
当用户登录时被调用,接收到登录的id和addr
void L_ClientOut(const ClientId& id)
用户登出时被调用,用来处理客户端id登出信息
void L_ClientData(const ClientId& id,void* buf,int size);
接收到客户端数据时被调用,一般是用户服务器逻辑处理的入口
参数说明:
id:接收到客户端id
buf:接收数据指针buf
size:接收到数据的大小sizie
void L_AppData(const std::string& appid,void*buf,int size);
其他应用数据接入时被调用,常用来做多应用程序之间的通信
参数说明:
appid:接收到其他应用的appid
buf:接收数据指针
size:接收到数据的大小
void L_Close();
通讯库主动断开时被调用
使用方法:
class MyApp:public adcloud::app::IAppListener{
public:
void L_ClientIn(const adcloud::app::ClientId& id,const std::string& addr){
//处理用户登录时的信息
num_client ++ ;
}
void L_ClientOut(const adcloud::app::ClientId& id){
//处理客户端登出时的逻辑
num_client --;
}
void L_ClientData(const adcloud::app::ClientId& id,void* buf,int size){
//处理客户端有数据时的逻辑
}
void L_AppData(const std::string& appid,void*buf,int size){
//处理其他应哟有数据接入时的消息
}
void L_Close(){
//cout << "L_Close"处理通讯库关闭时的逻辑
exit(0);
}
private:
int num_client;
};
class IApp:
服务器发送相关类,直接调用该类的方法就可以实现对客户端或则其他app发送消息(包括单个发送,群发和广播等)
void Stop()
停止与通讯库的通信
void Release()
释放通讯库资源
bool SendToClient(const ClientId& id,void* buf,int size)
向客户端发送数据 发送成功返回true,失败返回false
发送参数:目标客户端id发送数据的地址buf和要发送数据的大小size
bool CloseClient(const ClientId& id);
关闭与客户端为id的连接,
成功返回true,失败为false
bool AddScope(const std::string& scope,const ClientId& id)
把一个客户端id加入到scope群发域,
成功返回true,失败为false
bool DelScope(const std::string& scope,const ClientId& id)
把一个客户端id从群发域scope中删除,
成功返回true,失败为false
bool SendToScope(const std::string& scope,void* buf,int size)
对一个群发域群scope发消息,buf:要群发的数据地址,size:要群发的数据大小
成功返回true,失败为false
bool Broadcast(void*buf,int size)
发送广播消息,包括广播的数据首地址buf,广播的数据大小size
成功返回true,失败为false
bool SendToApp(const std::string& appid,void*buf,int size)
向其他应用发送数据,常用来做多应用程序之间的通信,要发送的其他应用的appid,发送数据指针地址buf和发送到数据的大小size,成功为true,失败为false