SDK 集成方式
更新时间: 2025/04/29 09:37:32
网易云信 IM Web Elite SDK(简称 IM2)为原版 Web SDK(简称 IM1)的重构版本。IM2 继承了 IM1 的特性,提供完善的即时通讯功能开发框架和简洁的 API 接口,方便您快速将即时通讯功能集成到您的PC/移动 Web 应用及 NodeJS、React Native、微信小程序、字节跳动小程序等跨平台应用。
相较于 IM1,IM2 做了如下改进:
- 使用 TypeScript 重构,API 出入参数定义更加完善。
- 使用 Promise API 替代回调地狱(callback hell)。
- 支持更多开发环境:现在支持 IE v11.0.0 及以上版本和 chrome v4.0.0 及以上版本等浏览器,以及微信小程序、支付宝小程序、百度智能小程序和字节跳动小程序、uniapp等跨平台开发环境。
- 结构更精简。包体积降至 IM1 的 40%。
SDK 下载
请前往 nim-web-sdk-ng 下载 SDK。
SDK 结构如下:
dist
├── CHATROOM_BROWSER_SDK TS 声明
├── CHATROOM_BROWSER_SDK.js 聊天室 SDK 的 UMD 格式的浏览器兼容版
├── ChatROOM_MINIAPP_SDK TS 声明
├── ChatROOM_MINIAPP_SDK.js 聊天室 SDK 的 UMD 格式的各种小程序兼容版
├── CHATROOM_UNIAPP_SDK TS 声明
├── CHATROOM_UNIAPP_SDK.js 聊天室 SDK 的 UMD 格式的 uniapp 兼容版
├── NIM_BROWSER_SDK TS 声明
├── NIM_BROWSER_SDK.js NIM(即时通讯)SDK 的 UMD 格式的浏览器兼容版
├── NIM_MINIAPP_SDK.js NIM(即时通讯)SDK 的 UMD 格式的各种小程序兼容版
├── NIM_UNIAPP_SDK.js NIM(即时通讯)SDK 的 UMD 格式的 uniapp 兼容版
├── QCHAT_BROWSER_SDK.js QChat(圈组)SDK 的 UND 格式的浏览器兼容版
├── QCHAT_BROWSER_SDK.d.ts
├── esm
│ ├── index.d.ts
│ └── index.js ESM 格式的 SDK,诸多兼容环境适配器,NIM,Chatroom,QChat 三种 SDK 都作为变量导出
SDK 引入
请根据您的实际开发需求导入相应的 SDK 文件并初始化对应的 SDK 实例。
开发需求 |
环境 |
SDK 导入 |
初始化方式 |
---|---|---|---|
IM 功能 | 浏览器 | import NIMSDK from 'nim-web-sdk-ng/dist/NIM_BROWSER_SDK' |
const nim = new NIMSDK({...}) |
IM 功能 | uniapp | import NIMSDK from 'nim-web-sdk-ng/dist/NIM_UNIAPP_SDK' |
const nim = new NIMSDK({...}) |
IM 功能 | 微信/支付宝/头条/百度小程序 | import NIMSDK from 'nim-web-sdk-ng/dist/NIM_MINIAPP_SDK' |
const nim = new NIMSDK({...}) |
聊天室功能 | 浏览器 | import ChatroomSDK from 'nim-web-sdk-ng/dist/CHATROOM_BROWSER_SDK' |
const chatroom = new ChatroomSDK({...}) |
聊天室功能 | uniapp | import ChatroomSDK from 'nim-web-sdk-ng/dist/CHATROOM_UNIAPP_SDK' |
const chatroom = new ChatroomSDK({...}) |
聊天室功能 | 微信/支付宝/头条/百度小程序 | import ChatroomSDK from 'nim-web-sdk-ng/dist/CHATROOM_MINIAPP_SDK' |
const chatroom = new ChatroomSDK({...}) |
圈组功能 | 浏览器 | import QChatSDK from 'nim-web-sdk-ng/dist/QCHAT_BROWSER_SDK' |
const qchat = new QChatSDK({...}) |
uniapp 和各种小程序并不支持 TS,目前仅支持在浏览器环境导出 TS 声明。
ESM 形式引入
单独引入上述 SDK,代码总体积会比较大,如果开发者对体积大小有特别的需求,可以选用 ESM 形式引入。
- SDK 的版本需要 0.6.1 及以上。
- ESM 模式的 SDK,导出 IM、聊天室、圈组三个 SDK。
- 需要开发者自行注册模块和适配器。参见
node_modules
中关于esm
模块的 TS 定义来获取模块和适配器种类。 - 对于不需要的模块,建议开发者最后在工程中进行打包(tree-shaking)。
使用 ESM 形式引入的示例代码如下:
import { NIM, browserAdapters, MsgService, SessionService } from 'nim-web-sdk-ng/dist/esm'
// ESM 模式,IM 依赖的能力需要自行注册,以便于不用的模块最后能被 tree-shaking 掉。
NIM.setAdapters(browserAppAdapters)
NIM.registerService(MsgService, 'msg')
NIM.registerService(SessionService, 'session')
浏览器环境集成
具体集成流程请参见集成 SDK。
小程序环境集成
IM Web Elite SDK 所提供的小程序相关能力的接口使用方式,基本与浏览器环境下调用方式相同。但根据小程序与浏览器的差异,SDK 也做了适配,主要调用方式的差异体现在诸如文件上传、WebSocket和网络请求限制等方面。
域名白名单配置
开始小程序环境集成前,请确保已在微信开放平台完成域名白名单配置。
相关配置列表如下:
- request 合法域名:
- https://lbs.netease.im
- https://wlnimsc0.netease.im (IM 必需)
- https://wlnimsc1.netease.im (聊天室必需)
- WebSocket 合法域名:
- wss://wlnimsc0.netease.im (IM 必需)
- wss://wlnimsc1.netease.im (聊天室必需)
- uploadFile 合法域名:
- https://nos.netease.com (云信文件上传必需,如发送文件类消息等)
- downloadFile合法域名:
- https://nim-nosdn.netease.im (云信资源文件下载必需,如下载图片、文件等)
WebSocket 连接限制
微信小程序 1.7.0 及以上版本,最多可同时存在 5 条 WebSocket 连接,其中同域名的 WebSocket 连接最多 2 条。
如需在切换账号或聊天室时使用新实例,为保证不超过小程序 WebSocket 连接限制,请务必先调用 IM /聊天室实例的 destroy
方法,并在 promise
完成后以后再去创建新的实例。
初始化的配置
实例在小程序环境中运行,会受到下文的域名白名单限制,无法使用动态的基于位置的服务 (LBS) 自动调配长连接地址,所以初始化过程中的 LBS 只能使用一个固定的地址。
如下为使用固定 LBS 地址的示例:
jsimport NIMSDK from 'nim-web-sdk-ng/dist/NIM_MINIAPP_SDK
const nim = new NIMSDK({
appkey: "YOUR_APPKEY",
token: "YOUR_TOKEN",
account: "YOUR_ACCOUNT",
lbsUrls: [
"https://lbs.netease.im/lbs/wxwebconf.jsp"
],
linkUrl: "wlnimsc0.netease.im"
})
uniapp 运行在小程序环境中也需进行上述初始化配置。
小程序环境集成流程
具体集成流程请参考集成 SDK。