IM 即时通讯(增强版)
Web
新手接入指南
产品介绍
简介
产品优势
主要功能
功能介绍
账号集成与登录
基础消息功能
群组功能
聊天室功能
圈组功能
多端登录与互踢策略
海外数据中心
IM 平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能列表
快速集成 IM UIKit
非React框架集成 IM UIKit
组件导入
初始化
全局上下文
登录相关
实现消息收发及界面自定义
集成会话列表界面
集成会话消息界面
集成用户资料组件
集成通讯录界面
集成搜索组件
主题样式设置
语言设置
初始化(兼容 NIM SDK)
不含 UI 集成
SDK 集成概述
小程序环境集成声明
初始化与登录
消息收发
历史消息
消息扩展
最近会话
用户资料托管
好友关系托管
在线状态订阅
系统通知
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
超大群概述
超大群管理
超大群成员管理
反垃圾
聊天室功能
聊天室概述
聊天室标签功能
快速实现聊天室登录
聊天室消息管理
聊天室成员管理
聊天室信息管理
聊天室队列服务
圈组功能
圈组概述
初始化与登录
通用接口校验说明
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
频道分组
频道分组黑白名单
频道未读数管理
实时互动频道
搜索服务器与频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
频道用户定制权限
频道分组身份组
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
获取频道最后一条消息
会话消息回复(Thread)
圈组快捷评论
圈组消息搜索
查询历史消息
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组内容审核
圈组第三方回调
圈组相关抄送
圈组各端接口命名差异
融合存储方案
uniapp 推送相关
最佳实践
聊天室重要消息投递
API 参考
NIM SDK API 参考
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
服务协议

SDK 集成概述

更新时间: 2023/02/02 10:57:01

NIM Web 增强版 SDK (以下简称为“增强版”)为 NIM Web SDK (以下简称为“原版”)的重构版本。增强版继承了原版的特性,提供完善的即时通讯功能开发框架和简洁的 API 接口,方便您快速将即时通讯功能集成到您的 PC/移动 Web 应用及 NodeJS、微信小程序等跨平台应用。

相较于原版,增强版做了如下改进:

  • 使用 TypeScript 重构,API 出入参数定义更加完善。
  • 使用 Promise API 替代回调地狱(callback hell)。
  • 支持更多开发环境:现支持 IE v11.0.0 及以上版本和 chrome v4.0.0 及以上版本等浏览器,以及微信小程序、支付宝小程序、uniapp等跨平台开发环境。
  • 结构更精简。包体积降至原版 SDK 的 40%。

安装 SDK

SDK 以 npm 包的形式提供,请前往 nim-web-sdk-ng 获取 npm 包。

通过以下命令安装 SDK。

npm install nim-web-sdk-ng@latest

SDK 结构如下:

dist/
├── CHATROOM_BROWSER_SDK.js  聊天室浏览器适配版 UMD 格式
├── CHATROOM_MINIAPP_SDK.js  聊天室小程序适配版 UMD 格式
├── CHATROOM_UNIAPP_SDK.js   聊天室 UNIAPP 适配版 UMD 格式
├── NIM_BROWSER_SDK.js       IM 浏览器适配版 UMD 格式
├── NIM_MINIAPP_SDK.js       IM 小程序适配版 UMD 格式
├── NIM_UNIAPP_SDK.js        IM UNIAPP 适配版 UMD 格式
├── QCHAT_BROWSER_SDK.js     圈组浏览器适配版 UMD 格式
├── esm
│   ├── adapters.d.ts
│   ├── index.d.ts
│   ├── index.js             ESM 模式,汇总各模块的,ES Module 格式

这里的小程序适配版,实际指两种小程序:微信和支付宝。

ESM 模式的 SDK,导出了 IM、聊天室、圈组三个 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 声明。
  • SDK 所提供的小程序相关能力的接口使用方式,基本与浏览器环境下调用方式相同。但根据小程序与浏览器的差异,SDK 做了相关适配,主要调用方式的差异体现在文件上传、WebSocket 和网络请求限制等方面。具体请参见小程序环境集成声明

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
  • 引入 SDK
  • ESM 形式引入