[TOC]
# **实时通信**
## join 加入房间
**加入房间**
1.接口说明
网络服务注册,只有注册过后才能使用后续网络服务(例如实时语音对话等)。该API是异步实现,是否注册成功需要在joinResult回调函数中获得结果。 调用该API之后肯定会触发JoinResult回调函数(需要先注册回调)。
2.函数原型
`int join(string appID, string appKey, string userID, string roomID, int mode);`
* 参数说明:
| 参数 | 类型 | 说明 |
| --- | --- | --- |
| appID | string | 用于服务鉴权 |
| appKey | string | 玩家唯一的身份标识 |
| userID | string | 玩家唯一的身份标识 |
| roomID| string | 房间ID,只有相同房间的人才能进行互相通讯 |
| mode | int | mode设计分为主播模式(mode=1)和听众模式(mode=2),听众只能收听语音不能发送语音,而主播既可以发送语音也可以收听语音 |
3.示例代码
`client.join("fef68f5cf1a1ad61", "95dc07bda45acba098b83f8ed29e460d", "1", "1", 1);`
4.返回值
错误返回错误码,0表示设置成功。
## joinResult 加入房间异步结果
加入房间异步结果回调
1.接口说明
注册是否成功的回调事件,调用Join函数之后就会抛出该回调事件来通知是否注册成功。
2.函数原型
~~~
int setJoinResultHandler(IJoinResult result)
IJoinResult:(void*)(int)
~~~
3.示例代码
~~~
client.setJoinResultHandler(joinResult);
void joinResult(int code)
{
}
~~~
## netError 网络错误
**注册网络错误回调**
1.接口说明
注册网络错误回调函数。如若发生网络错误(例如 远程服务器关闭,被同名id挤下线, 客户端未连接网络等等),会抛出回调事件。
2.函数原型
~~~
int setNetErrorHandler(INetError netError)
INetError:(void*)()
~~~
3.示例代码
~~~
void handleNetError(){
}
client.setNetErrorHandler(handleNetError);
~~~
4.返回值
设置回调返回错误码,0表示设置成功。
## exit 退出房间
**退出房间**
1.接口说明
退出房间,断开与所有人的实时通信,使用本地模式。
2.函数原型
`int exit();`
3.示例代码
`client.exit();`
4.返回值
错误返回错误码,0表示设置成功。
## startSpeak 开始说话
**开始说话**
1.接口说明
开始说话,开启自己的麦克风,所有听自己的人都能听见此端语音
2.函数原型
`int startSpeak();`
3.示例代码
`client.startSpeak();`
4.返回值
错误返回错误码,0表示设置成功。
## stopSpeak 停止说话
**停止说话**
1.接口说明
停止说话,关闭自己的麦克风,不让别人听到此端的语音。
2.函数原型
`int stopSpeak();`
3.示例代码
`client.stopSpeak();`
4.返回值
错误返回错误码,0表示设置成功。
## call 呼叫用户
**呼叫用户**
1.接口说明
创建和指定id(想要听的人)的声音管道,初始化管道环境。 与其他用户建立实时通信
2.函数原型
`int call(string id);`
3.示例代码
`client.call("1");`
4.返回值
错误返回错误码,0表示设置成功。
## hangup 挂断
**挂断**
1.接口说明
删除和指定id(想要听的人)的声音管道,销毁管道环境。
2.函数原型
`int hangup(string id);`
3.示例代码
`client.hangup("1");`
4.返回值
错误返回错误码,0表示设置成功。
## startListen 开始听某人声音
**开始听某人声音**
1.接口说明
需要先调用call,听别人说话,id即为对方join时传递的userID,必须保证双方的APPID与ROOMID相同才能互相连麦。
2.函数原型
`int startListen(string id);`
3.示例代码
`client.startListen("1");`
4.返回值
错误返回错误码,0表示设置成功。
## stopListen 停止听某人声音
**停止听某人声音**
1.接口说明
停止后可调用Hangup删除管道,用于释放资源,停止听对方说话,id为对方Join时传递的userID。
2.函数原型
`int stopListen(string id);`
3.示例代码
`client.stopListen("1");`
4.返回值
错误返回错误码,0表示设置成功。
## selfVad 人声检测
**注册自己人声检测回调**
1.接口说明
注册静音检测回调函数,init之后数据就会抛出,每20ms调用一次。
2.函数原型
~~~
int setSelfVadHandler(selfVad vadObverser)
selfVad:(void*)(boolean isSpeech)
~~~
* isSpeech: 0(此时未检测到人声)
* isSpeech: 1(检测到人声)
3.示例代码
~~~
client.setSelfVadHandler(getVad);
void getVad(bool isSpeech){
}
~~~
4.返回值
错误返回错误码,0表示设置成功。
## otherVad 其他用户人声检测
**注册其他用户人声检测回调**
1.接口说明
注册静音检测回调函数,init之后数据就会抛出,每20ms调用一次。
2.函数原型
~~~
int setOtherVadHandler(OtherVad vadObverser)
otherVad:(void*)(final String userID, boolean isSpeech)
~~~
* isSpeech: 0(此时未检测到人声)
* isSpeech: 1(检测到人声)
3.示例代码
~~~
client.setSelfVadHandler(GetVad);
void GetVad(fina String userID,boolean isSpeech){
}
~~~
4.返回值
错误返回错误码,0表示设置成功。