// 请结合您项目实际情况引入 SDK import { ImEngine, ImLogLevel } from "../lib/alivc-im.js"; const initEngine = async () => { const engine = ImEngine.createEngine(); try { await engine.init({ appId: "APP_ID", // 开通应用后可以在控制台上拷贝 appSign: "APP_SIGN", // 开通应用后可以在控制台上拷贝 logLevel: ImLogLevel.ERROR, // 日志级别,调试时使用 ImLogLevel.DBUG // 指定引入的 wasm 的地址 locateFile: (url) => { if (url.endsWith(".wasm")) { // 需要根据您项目 alivc-im.wasm.br 文件存放位置修改返回的路径 // 这里是从项目根目录读取文件,而不是当前文件的目录下,因此不需要使用 .. 和 . 这些相对路径 // 如果您参考了上面 uni-app 工程的目录结构,那么这里返回 /static/mp-weixin/alivc-im.wasm.br // 如果您参考了上面 Taro 工程的目录结构,那么这里返回 /static/alivc-im.wasm.br return "/static/mp-weixin/alivc-im.wasm.br"; } return url; }, }); // 需确认init异步操作成功后,才可以继续执行login等操作 // 初始化成功,监听事件 engine.on("connecting", () => { console.log("connecting"); }); engine.on("connectfailed", (err) => { console.log(`connect failed: ${err.message}`); }); engine.on("connectsuccess", () => { console.log("connect success"); }); engine.on("disconnect", (code) => { // code 断开原因 1:主动退出, 2:被踢出 3:超时等其他原因 4:在其他端上登录 console.log(`disconnect: ${code}`); }); engine.on("linkstate", (data) => { // 链接状态发生变化,state 状态 0:未连接 1:连接中 2:已连接 3:已断联 console.log(`previousState: ${data.previousState}, currentState: ${data.currentState}`); }); engine.on("reconnectsuccess", (groupInfos) => { // 重连成功,会返回所在群组的数据 console.log(groupInfos); }); engine.on("tokenexpired", async (cb) => { // 这里需要更新为获取新的登录信息的代码 const auth = await getLoginAuth(); cb(null, { timestamp: 22123123, // 服务端返回timestamp值 nonce: "nonce", // 服务端返回nonce值 token: "xxx", // 服务端返回token值 }); }); } catch (error) { // init 错误码含义 // 1001:重复初始化、1002:创建底层引擎失败、-1:底层重复初始化、-2:初始化配置信息有误 console.log(`Init Fail: code:${error.code}, message: ${error.msg}`); } }; export { initEngine };