/** * 获取错误描述 * @param [in] code 错误代码 * @return 错误代码对应的错误描述 */ public static string GetKickErrorDescription(KICK_ERROR_CODE code) { string error = string.Empty; switch (code) { case KICK_ERROR_CODE.ERROR_KICK_BY_HOST: error = "被主播请出房间"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_MASTER_EXIT: error = "RTMP推流失败"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_NEWCHAIRENTER: error = "其他人以主播身份进入房间"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_NOAUDIODATA: error = "没有上行音频数据"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_NOVIDEODATA: error = "没有上行视频数据"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_PUSHRTMPFAILED: error = "RTMP推流失败"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_RELOGIN: error = "重复登录"; break; case KICK_ERROR_CODE.ERROR_KICK_BY_SERVEROVERLOAD: error = "服务器过载"; break; case KICK_ERROR_CODE.ERROR_TOKEN_EXPIRED: error = "token过期"; break; } ; return(error); }
// 触发 SDK 事件 public string Poll() { IntPtr msg = getMessage(); string str = Marshal.PtrToStringAnsi(msg); freeObject(msg); if (string.IsNullOrEmpty(str)) { return(string.Empty); } Debug.Log("TTT >>> " + str + " <<<"); string[] sArray = str.Split('\t'); if (sArray [0].CompareTo("onError") == 0) { if (OnError != null) { ERROR_CODE errCode = (ERROR_CODE)int.Parse(sArray [1]); OnError(errCode, GetErrorDescription(errCode)); } } else if (sArray[0].CompareTo("onUserKicked") == 0) { if (onUserKicked != null) { int uid = int.Parse(sArray[1]); KICK_ERROR_CODE errCode = (KICK_ERROR_CODE)int.Parse(sArray[2]); onUserKicked(errCode, GetKickErrorDescription(errCode)); } } else if (sArray [0].CompareTo("onConnectionLost") == 0) { if (OnConnectionLost != null) { OnConnectionLost(); } } else if (sArray [0].CompareTo("onJoinChannelSuccess") == 0) { if (OnJoinChannelSuccess != null) { uint uid = (uint)int.Parse(sArray [2]); int elapsed = int.Parse(sArray [3]); OnJoinChannelSuccess(sArray [1], uid, elapsed); } } else if (sArray [0].CompareTo("onLeaveChannel") == 0) { if (OnLeaveChannel != null) { int duration = int.Parse(sArray [1]); int txAudioKBitrate = int.Parse(sArray [2]); int rxAudioKBitrate = int.Parse(sArray [3]); int users = int.Parse(sArray [4]); RtcStats stats; stats.duration = (uint)duration; stats.txAudioKBitRate = (ushort)txAudioKBitrate; stats.rxAudioKBitRate = (ushort)rxAudioKBitrate; stats.users = (uint)users; OnLeaveChannel(stats); } } else if (sArray [0].CompareTo("onUserJoined") == 0) { if (OnUserJoined != null) { uint uid = (uint)int.Parse(sArray [1]); int elapsed = int.Parse(sArray [2]); OnUserJoined(uid, elapsed); } } else if (sArray [0].CompareTo("onUserOffline") == 0) { if (OnUserOffline != null) { uint uid = (uint)int.Parse(sArray [1]); int reason = int.Parse(sArray [2]); OnUserOffline(uid, (USER_OFFLINE_REASON)reason); } } else if (sArray [0].CompareTo("onAudioRouteChanged") == 0) { if (OnAudioRouteChanged != null) { int routing = int.Parse(sArray [1]); OnAudioRouteChanged((AUDIO_ROUTE)routing); } } else if (sArray [0].CompareTo("onReportAuidoLevel") == 0) { if (OnReportAuidoLevel != null) { uint uid = (uint)int.Parse(sArray [1]); int auidoLevel = int.Parse(sArray [2]); OnReportAuidoLevel(uid, auidoLevel); } } else if (sArray [0].CompareTo("onAudioMuted") == 0) { if (OnUserMuted != null) { uint uid = (uint)int.Parse(sArray [1]); bool muted = int.Parse(sArray [2]) != 0; OnUserMuted(uid, muted); } } else if (sArray [0].CompareTo("onReportRtcStats") == 0) { if (OnRtcStats != null) { int j = 1; int duration = int.Parse(sArray[j++]); int txAudioKBitrate = int.Parse(sArray[j++]); int rxAudioKBitrate = int.Parse(sArray[j++]); int users = int.Parse(sArray[j++]); RtcStats stats; stats.duration = (uint)duration; stats.txAudioKBitRate = (ushort)txAudioKBitrate; stats.rxAudioKBitRate = (ushort)rxAudioKBitrate; stats.users = (uint)users; OnRtcStats(stats); } } else { } return(sArray [0]); }