本文介绍直播互动消息在开发、测试过程中遇到问题如何自助排查和修复。
开启本地日志
当您的应用处于开发、测试阶段时,为了方便定位并修复问题,可能需要 SDK 输出更详细的信息来辅助分析。您可以在初始化 SDK 实例的时候,通过配置信息来开启日志输出并设置日志信息等级,之后即可在 IDE 或者浏览器的控制台中查看日志信息。
Android
ImSdkConfig config = new ImSdkConfig();
config.logLevel = ImLogLevel.DEBUG; //[选填],指定Log日志可输出的最小等级,默认是ImLogLevel.DEBUG;若需要关闭Log日志,则设置为ImLogLevel.NONE;
iOS
// setup初始化
AliVCIMEngineConfig *config = [AliVCIMEngineConfig new];
config.logLevel = AliVCIMLogLevelDebug;
Web
const { ImEngine, ImLogLevel } = AliVCInteraction;
// 获取引擎单例
const engine = ImEngine.createEngine();
try {
await engine.init({
deviceId: "deviceId", //[选填]
appId: "appId", //[必填]传空会返回初始化失败-2;请务必在创建应用后,将示例中的APP_ID替换为您应用的AppId,否则无法使用;
appSign: "appSign", //[必填]传空会返回初始化失败-2;请务必在创建应用后,将示例中的APP_SIGN替换为您应用的AppSign,否则无法使用;
logLevel: ImLogLevel.ERROR, //[选填],指定Log日志可输出的最小等级,默认是ImLogLevel.DEBUG;若需要关闭Log日志,则设置为ImLogLevel.NONE;
});
} catch (error) {
// init 错误码含义
// 初始化返回非0,表示初始化失败,其中1001:重复初始化、1002:创建底层引擎失败、-1:底层重复初始化、-2:初始化配置信息有误
console.log(`Init Fail: code:${error.code}, message: ${error.msg}`);
}
微信小程序
// 请结合您项目实际情况引入 SDK
const { ImEngine, ImLogLevel } = import '../../lib/alivc-im.js';
// 获取引擎单例
const engine = ImEngine.createEngine();
try {
await engine.init({
deviceId: "deviceId", //[选填]
appId: "appId", //[必填]传空会返回初始化失败-2;请务必在创建应用后,将示例中的APP_ID替换为您应用的AppId,否则无法使用;
appSign: "appSign", //[必填]传空会返回初始化失败-2;请务必在创建应用后,将示例中的APP_SIGN替换为您应用的AppSign,否则无法使用;
logLevel: ImLogLevel.ERROR, //[选填],指定Log日志可输出的最小等级,默认是ImLogLevel.DEBUG;若需要关闭Log日志,则设置为ImLogLevel.NONE;
// 指定引入的 wasm 的地址
locateFile: (url: string) => {
if (url.endsWith('.wasm')) {
// 需要根据您项目 alivc-im.wasm.br 文件存放位置修改返回的路径
// 这里是从项目根目录读取文件,而不是当前文件的目录下,因此不需要使用 .. 和 . 这些相对路径
// 如果您参考了上面 uni-app 工程的目录结构,那么这里返回 /static/mp-weixin/alivc-im.wasm.br
// 如果您参考了上面 Taro 工程的目录结构,那么这里返回 /static/alivc-im.wasm.br
return '/lib/alivc-im.wasm.br';
}
return url;
},
});
} catch (error) {
// init 错误码含义
// 初始化返回非0,表示初始化失败,其中1001:重复初始化、1002:创建底层引擎失败、-1:底层重复初始化、-2:初始化配置信息有误
console.log(`Init Fail: code:${error.code}, message: ${error.msg}`);
}
日志信息等级,一共有 DEBUG、INFO、WARN、ERROR、NONE 五个等级,其中 DEBUG 输出的日志信息最多,ERROR 输出的日志信息最少,NONE 不输出日志信息。
开发测试阶段,建议将日志信息等级设置为 DEBUG。
正式上线时,建议将日志信息等级设置为 INFO。
错误码对照表
错误码 | 原因 | 解决办法 |
0/200 | 成功。 | 正常调用。 |
-1 | 重复初始化。 | 对应操作:初始化; 请先判断是否已经初始化再操作。 |
-2 | 初始化配置信息有误。 | 对应操作:初始化; 请检查初始化配置信息是否正确,例如appid、appsign为空。 |
1 | 没有初始化。 | 请先判断是否已经初始化再操作。 |
2 | 参数异常。 | 请检查传入参数是否正确,可以结合错误信息进一步排查。 |
3 | 状态有误。 | 请检查操作流程是否正确,可以结合错误信息进一步排查。 |
4 | 连接失败。 | 若是登录操作,则表示建连失败了,请检查网络环境等是否正常,再做重试;若是其他操作,则表示当前处于断连掉线状态,待重连成功后再重试;可以通过监听连接状态的变化通知,判断是否已经重连成功。 |
5 | 建连超时。 | 对应操作:登录; 请检查网络环境等是否正常,再做重试; |
6 | 发送失败。 | 请检查网络环境等是否正常,再做重试;可以结合错误信息进一步排查。 |
7 | 发送取消。 | 请结合错误信息进一步排查;一般是前面的操作还没结束,又执行了登出操作,从而中断前面的操作。 |
8 | 发送超时。 | 发送消息最终超时;请检查网络环境等是否正常,再做重试; |
9 | 订阅失败。 | 对应操作:加入群组或者重连后恢复加入群组; 请检查网络环境等是否正常,退出群组后再重试。 |
10 | 订阅通道断连。 | 对应操作:加入群组或者重连后恢复加入群组; 请检查网络环境等是否正常,退出群组后再重试。 |
11 | 订阅超时。 | 对应操作:加入群组或者重连后恢复加入群组; 请检查网络环境等是否正常,退出群组后再重试。 |
12 | 压缩失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
13 | 解压失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
14 | 加密失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
15 | 解密失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
16 | 消息体封装失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
17 | 消息体解析失败。 | 请结合本地日志信息排查,检查应用是否内存不足等,稍候重试。 |
18 | 数据为空。 | 对应操作:初始化; 请检查初始化配置appsign信息是否正常。 |
19 | 数据错误。 | 对应操作:初始化; 请检查初始化配置appsign信息是否正常。 |
20 | 地址出错。 | 对应操作:初始化; 请检查初始化配置appsign信息是否正常;例如头部带了空格、内容被截断等。 |
21 | 建连取消。 | 对应操作:登录; 登录建连时,执行了登出操作,从而前面的登录被中断。 |
304 | 重复登录login,或已在群组中重复加入群组joinGroup。 |
|
400 | 参数错误;参数无法解析; | 请检查传入参数是否符合规范,可以结合错误信息进一步排查;例如appid、userid、groupid等ID信息,限制最长64位,仅限于A~Z、a~z、0~9及“-”,不能包含其他字符。 |
402 | 登录时鉴权失败 | 请检查传入信息是否正确。例如登录token生成的参数信息跟登录的参数信息是否不一致; |
403 | 操作无权限; 或登录时token过期。 | 请检查传入信息是否正确。例如登录的token是否过期、非管理员操作了需要管理员权限的接口。 |
404 | no session,可能因为网络变化等原因导致的连接变化,服务器在新连接上收到消息无法正常处理,需要reconnect 信令。 | SDK内部会执行重连,待重连成功后再操作;可以通过监听连接状态的变化通知,判断是否已经重连成功。 |
406 | 安全审核没有通过。 | 请检查是否开启了安全审核功能,且发送的内容是否符合安全审核标准。 |
407 | 创建的群组数量超过上限。 | 请求检查创建的群组数量是否已经超过限制。 |
409 | 重连时出现不可恢复的错误。 | 请退出后重试。 |
412 | 繁忙,发送太快。 | 请稍候重试。 |
413 | 繁忙,发送太快。 | 请稍候重试。 |
420 | 超级大群不支持查询用户列表。 | 请先判断不是超级大群再操作。 |
424 | 发送 c2c 消息对方用户不在线。 | 请等待对方上线后再操作。 |
425 | 未进入群组。 | 请先加入群组再操作。 |
429 | 操作过快,短时间内,发起过多请求。如同一个用户,1秒内发起2次登录。 | 请稍候重试;或者针对接口做频率限制,防止短时间内频繁重复操作。 |
440 | 群组不存在或已删除。 | 对应操作:加入群组、群发消息、管理群信息等一系列针对群组的操作; 请检查群组是否已经被删除。 |
441 | 群组已删除。 | 对应操作:加入群组、群发消息、管理群信息等一系列针对群组的操作; 请检查群组是否已经被删除。 |
442 | 无法在该群组中发送消息,被禁言。 | 请检查用户是否被禁言。 |
443 | 进了太多的群组, 列表人数超大等。 | 请检查是否没有及时退出群组等操作。 |
444 | 发送群消息类型超过上限30种。 | 请检查并限制消息类型的数量。 |
500 | 系统临时错误。 | 请稍候重试。 |
601 | 状态错误。 | 请结合错误信息进一步排查操作流程是否正常;例如返回"SDK未初始化",则需要先执行初始化成功后才能操作。 |
602 | 未登录。 | 请检查操作流程是否正确;需要登录成功后才能执行相关操作;例如只有登录后才能加入群组。 |
603 | 收到上次登录状态消息。 | 请检查操作流程是否符合预期。 |
604 | 解析数据失败。 | 请本地日志信息,以及返回的错误信息进一步排查; |
1001 | 重复初始化。 | 对应操作:初始化; 请先判断是否已经初始化再操作。 |
1002 | 创建底层引擎失败。 | 对应操作:初始化; 请重启应用后重试 |