[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表示设置成功。