Flutter IMLib 状态码

客户端状态码来自 errors.json:1xxx 为客户端 / 参数 / 权限类,3xxx 为 SDK 本地错误(不来自服务端);所有异步接口通过返回信封中的 code 表达失败,不用异常表示业务错误。

返回信封​

层信封说明
客户端RcResult {code,data?,msg?}所有 IMLib 异步接口统一返回;成功 code=0
客户端(IDL 声明)RcResult<T> = {code:int, data?:T, msg?:string}来自 sdk-imlib.json → resultEnvelope
WebSocketFrame {id?,type:'error',data:{code,message}}协议层错误帧;SDK 会转换为 RcResult 错误码
Open APIOpenApiResponse {code,msg?,data?,requestId?}服务端 REST;客户端内部按同一码表处理

错误码分类​

码段含义处理建议
0成功—
1xxx客户端 / 参数 / 权限类不可重试(1008 / 1025 限频与配额除外);修正参数或引导用户
2xxx服务端 / 依赖类可重试(退避重试)
3xxxSDK 本地错误多为可重试(连接未就绪、超时、网络);3004 表示当前平台不支持该能力

客户端状态码​

错误码名称HTTP分类可重试中文文案
1001INVALID_PARAMETER400客户端 / 参数 / 权限否参数错误
1002INVALID_TOKEN401客户端 / 参数 / 权限否Token 无效或已过期
1003FORBIDDEN403客户端 / 参数 / 权限否无权限
1004USER_NOT_FOUND404客户端 / 参数 / 权限否用户不存在
1005GROUP_NOT_FOUND404客户端 / 参数 / 权限否群组不存在
1006NOT_GROUP_MEMBER403客户端 / 参数 / 权限否未加入群组
1007MESSAGE_TOO_LARGE400客户端 / 参数 / 权限否消息体过大(上限 5KB)
1008RATE_LIMITED429客户端 / 参数 / 权限是发送过于频繁
1009GROUP_MUTED403客户端 / 参数 / 权限否你已被禁言
1010SENSITIVE_WORD400客户端 / 参数 / 权限否内容包含敏感词
1011BLOCKED403客户端 / 参数 / 权限否已被对方拉黑或你已拉黑对方
1012CHATROOM_NOT_FOUND404客户端 / 参数 / 权限否聊天室不存在
1013CHATROOM_CLOSED410客户端 / 参数 / 权限否聊天室已销毁
1014NOT_CHATROOM_MEMBER403客户端 / 参数 / 权限否未加入聊天室
1015MEMBERSHIP_LIMIT400客户端 / 参数 / 权限否成员数量超出上限
1016USER_BANNED403客户端 / 参数 / 权限否账号已被封禁
1017APP_DISABLED403客户端 / 参数 / 权限否应用已停用
1022RECALL_EXPIRED400客户端 / 参数 / 权限否超过撤回时限
1023MESSAGE_ALREADY_RECALLED400客户端 / 参数 / 权限否消息已撤回
1025QUOTA_EXCEEDED429客户端 / 参数 / 权限是超出配额
1026MESSAGE_NOT_EXPANDABLE400客户端 / 参数 / 权限否消息不可扩展(发送时未开启可扩展,或会话类型不支持)
1027EXPANSION_LIMIT_EXCEEDED400客户端 / 参数 / 权限否消息扩展超出限制(单次 20 对 / 单条 300 对 / 键值长度)
1028REACTION_INVALID400客户端 / 参数 / 权限否回应标识非法(1-16 字符)
1029REACTION_LIMIT_EXCEEDED400客户端 / 参数 / 权限否单条消息回应种类超出上限(50)
1030REACTION_USER_LIMIT_EXCEEDED400客户端 / 参数 / 权限否单个回应参与用户超出上限(100)
1031TAG_LIMIT_EXCEEDED400客户端 / 参数 / 权限否单用户会话标签数超过上限(20)
1032TAG_NOT_FOUND404客户端 / 参数 / 权限否标签不存在
1033TAG_CONVERSATION_LIMIT_EXCEEDED400客户端 / 参数 / 权限否标签内会话数超过上限(1000)
1034CONVERSATION_NOT_FOUND404客户端 / 参数 / 权限否会话不存在(标签内置顶等操作要求会话已在标签内)
1035MESSAGE_REJECTED_BY_CALLBACK403客户端 / 参数 / 权限否发送前同步回调拒绝该消息(应用服务器返回 action=block,或降级配置为 block)
3001SDK_NOT_CONNECTED0SDK 本地是长连接未就绪
3002SDK_TIMEOUT0SDK 本地是请求超时
3003SDK_NETWORK_ERROR0SDK 本地是网络错误
3004SDK_UNSUPPORTED0SDK 本地否当前平台不支持该能力

IMLib 操作引用码​

客户端 103 个语义操作共引用 34 个错误码(并集),下表给出处理建议。

错误码名称可重试处理建议
1001INVALID_PARAMETER否修正参数后重试;不可重试。
1002INVALID_TOKEN否重新获取 Token 后重连;不要循环重试旧 Token。
1003FORBIDDEN否修正后重试;不可自动重试。
1004USER_NOT_FOUND否修正后重试;不可自动重试。
1005GROUP_NOT_FOUND否修正后重试;不可自动重试。
1006NOT_GROUP_MEMBER否修正后重试;不可自动重试。
1007MESSAGE_TOO_LARGE否修正后重试;不可自动重试。
1008RATE_LIMITED是指数退避后重试;避免高频重发。
1009GROUP_MUTED否修正后重试;不可自动重试。
1010SENSITIVE_WORD否修正后重试;不可自动重试。
1011BLOCKED否提示用户被拉黑关系;不要自动重试。
1012CHATROOM_NOT_FOUND否修正后重试;不可自动重试。
1013CHATROOM_CLOSED否修正后重试;不可自动重试。
1014NOT_CHATROOM_MEMBER否修正后重试;不可自动重试。
1015MEMBERSHIP_LIMIT否修正后重试;不可自动重试。
1016USER_BANNED否提示账号封禁;跳转申诉流程。
1017APP_DISABLED否提示应用停用;联系管理员。
1021SERVICE_NOT_ACTIVATED否修正后重试;不可自动重试。
1022RECALL_EXPIRED否修正后重试;不可自动重试。
1023MESSAGE_ALREADY_RECALLED否修正后重试;不可自动重试。
1026MESSAGE_NOT_EXPANDABLE否修正后重试;不可自动重试。
1027EXPANSION_LIMIT_EXCEEDED否修正后重试;不可自动重试。
1028REACTION_INVALID否修正后重试;不可自动重试。
1029REACTION_LIMIT_EXCEEDED否修正后重试;不可自动重试。
1030REACTION_USER_LIMIT_EXCEEDED否修正后重试;不可自动重试。
1031TAG_LIMIT_EXCEEDED否修正后重试;不可自动重试。
1032TAG_NOT_FOUND否修正后重试;不可自动重试。
1033TAG_CONVERSATION_LIMIT_EXCEEDED否修正后重试;不可自动重试。
1034CONVERSATION_NOT_FOUND否修正后重试;不可自动重试。
2001INTERNAL_ERROR是退避后重试。
2002DEPENDENCY_UNAVAILABLE是退避后重试。
3001SDK_NOT_CONNECTED是等待 CONNECTED 后重试;先检查连接状态。
3002SDK_TIMEOUT是超时重试一次;持续超时检查网络与服务端可达性。
3003SDK_NETWORK_ERROR是网络错误:重连成功后重试。

错误处理示例​

Dart
final code = await engine.connect(TOKEN, 10);
switch (code) {
  case 0: break;
  case 1002: /* Token 无效/过期:不自动重连,提示重新登录 */ break;
  case 1003: /* 无权限/被禁用:不自动重连 */ break;
  case 3001:
  case 3002: /* 传输层/超时:SDK 按退避策略自动重连 */ break;
  default: print('connect failed: ${code}');
}

相关文档​