using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace LeanCloud.Realtime { /// /// 实时通信的异常 /// public class AVIMException : Exception { /// /// 错误代码 /// public enum ErrorCode { /// /// Error code indicating that an unknown error or an error unrelated to LeanCloud /// occurred. /// OtherCause = -1, /// /// 服务端错误 /// FromServer = 4000, /// /// websocket 连接非正常关闭,通常见于路由器配置对长连接限制的情况。SDK 会自动重连,无需人工干预。 /// UnknownError = 1006, /// /// 应用不存在或应用禁用了实时通信服务 /// APP_NOT_AVAILABLE = 4100, /// /// 登录签名验证失败 /// SIGNATURE_FAILED = 4102, /// /// Client ClientId 格式错误,超过 64 个字符。 /// INVALID_LOGIN = 4103, /// /// Session 没有打开就发送消息,或执行其他操作。常见的错误场景是调用 open session 后直接发送消息,正确的用法是在 Session 打开的回调里执行。 /// SESSION_REQUIRED = 4105, /// /// 读超时,服务器端长时间没有收到客户端的数据,切断连接。SDK 包装了心跳包的机制,出现此错误通常是网络问题。SDK 会自动重连,无需人工干预。 /// READ_TIMEOUT = 4107, /// /// 登录超时,连接后长时间没有完成 session open。通常是登录被拒绝等原因,出现此问题可能是使用方式有误,可以 创建工单,由我们技术顾问来给出建议。 /// LOGIN_TIMEOUT = 4108, /// /// 包过长。消息大小超过 5 KB,请缩短消息或者拆分消息。 /// FRAME_TOO_LONG = 4109, /// /// 设置安全域名后,当前登录的域名与安全域名不符合。 /// INVALID_ORIGIN = 4110, /// /// 设置单设备登录后,客户端被其他设备挤下线。 /// SESSION_CONFLICT = 4111, /// /// 应用容量超限,当天登录用户数已经超过应用设定的最大值。 /// APP_QUOTA_EXCEEDED = 4113, /// /// 客户端发送的序列化数据服务器端无法解析。 /// UNPARSEABLE_RAW_MESSAGE = 4114, /// /// 客户端被 REST API 管理接口强制下线。 /// KICKED_BY_APP = 4115, /// /// 应用单位时间内发送消息量超过限制,消息被拒绝。 /// MESSAGE_SENT_QUOTA_EXCEEDED = 4116, /// /// 服务器内部错误,如果反复出现请收集相关线索并 创建工单,我们会尽快解决。 /// INTERNAL_ERROR = 4200, /// /// 通过 API 发送消息超时 /// SEND_MESSAGE_TIMEOUT = 4201, /// /// 上游 API 调用异常,请查看报错信息了解错误详情 /// CONVERSATION_API_FAILED = 4301, /// /// 对话相关操作签名错误 /// CONVERSATION_SIGNATURE_FAILED = 4302, /// /// 发送消息,或邀请等操作对应的对话不存在。 /// CONVERSATION_NOT_FOUND = 4303, /// /// 对话成员已满,不能再添加。 /// CONVERSATION_FULL = 4304, /// /// 对话操作被应用的云引擎 Hook 拒绝 /// CONVERSATION_REJECTED_BY_APP = 4305, /// /// 更新对话操作失败 /// CONVERSATION_UPDATE_FAILED = 4306, /// /// 该对话为只读,不能更新或增删成员。 /// CONVERSATION_READ_ONLY = 4307, /// /// 该对话禁止当前用户发送消息 /// CONVERSATION_NOT_ALLOWED = 4308, /// /// 更新对话的请求被拒绝,当前用户不在对话中 /// CONVERSATION_UPDATE_REJECT = 4309, /// /// 查询对话失败,常见于慢查询导致的超时或受其他慢查询导致的数据库响应慢 /// CONVERSATION_QUERY_FAILED = 4310, /// /// 拉取对话消息记录失败,常见与超时的情况 /// CONVERSATION_LOG_FAILED = 4311, /// /// 拉去对话消息记录被拒绝,当前用户不再对话中 /// CONVERSATION_LOG_REJECT = 4312, /// /// 该功能仅对系统对话有效 /// SYSTEM_CONVERSATION_REQUIRED = 4313, /// /// 该功能仅对普通对话有效。 /// NORMAL_CONVERSATION_REQUIRED = 4314, /// /// 当前用户被加入此对话的黑名单,无法发送消息。 /// CONVERSATION_BLACKLISTED = 4315, /// /// 该功能仅对暂态对话有效。 /// TRANSIENT_CONVERSATION_REQUIRED = 4316, /// /// 发送消息的对话不存在,或当前用户不在对话中 /// INVALID_MESSAGING_TARGET = 4401, /// /// 发送的消息被应用的云引擎 Hook 拒绝 /// MESSAGE_REJECTED_BY_APP = 4402, /// /// 客户端无法通过 WebSocket 发送数据包 /// CAN_NOT_EXCUTE_COMMAND = 1002, } /// /// 用户云代码返回的错误码 /// public int AppCode { get; private set; } internal AVIMException(ErrorCode code, string message, Exception cause = null) : base(message, cause) { this.Code = code; } internal AVIMException(int code, int appCode, string message, Exception cause = null) : this((ErrorCode)code, message, cause) { this.AppCode = appCode; } /// /// The LeanCloud error code associated with the exception. /// public ErrorCode Code { get; private set; } } }