浏览器环境集成
更新时间: 2024/03/27 13:46:16
网易云信 IM SDK(NetEase Instant Messaging SDK,NIM SDK(JavaScript) ) 为 PC 端 Web 应用、移动端 Web 应用,以及 Node.js、微信小程序等跨平台应用,提供完善的即时通信功能开发能力,屏蔽其内部复杂细节,对外提供较为简洁的 API 接口,方便您快速集成即时通信功能。
本文介绍如何快速将 NIM SDK 集成到您的浏览器项目中。
若需要集成 小程序 SDK ,建议使用 IM 含圈组版的小程序 SDK。
开发环境要求
请确保您的开发环境满足如下要求:
- IE 9+、Edge、Chrome 58+、 Safari 10+、Firefox 54+ 等主流桌面版浏览器。
- iPhone 5s 以上机型(操作系统 iOS 8.0+)的 Safari 浏览器及其内置微信浏览器。
- 主流机型 Android 5+ 系统的 Chrome 浏览器及其内置微信浏览器。
- NIM SDK v5.0.0 以下版本兼容IE 8,v5.0.0 及以上版本需使用 IE 9+ 。
- 如使用 IE 浏览器,需要将项目部署在 HTTPS 环境下才能连接到云信服务器。上述其他浏览器可以在 HTTP 或 HTTPS 环境下连接到云信服务器。
集成 SDK
方式1: npm 集成(推荐)
-
通过如下 npm 命令安装最新版 SDK。
npm install @yxim/nim-web-sdk@latest
SDK 所包含的三个文件的说明如下:
dist/SDK ├── NIM_Web_Chatroom.js 提供聊天室功能,浏览器适配版(UMD 格式) ├── NIM_Web_NIM.js 提供 IM 功能,包括单聊、会话和群聊等,但不包含聊天室。浏览器适配版(UMD 格式) ├── NIM_Web_SDK.js 提供 IM 功能和聊天室功能的集成包,浏览器适配版(UMD 格式)
-
在代码中通过 import/require 引入您所需的 SDK 文件。
具体如何根据业务需求选择 SDK 文件及相关注意事项,请参见下文的SDK 文件选择。
SDK 在工程中的调用示例:
javascript
// 使用默认引入路径时,引入的是dist/SDK/NIM_Web_SDK.js。该入口包含 NIM 和 Chatroom 两个对象 // 入口文件的区别请参考下文的"SDK文件选择" import SDK from '@yxim/nim-web-sdk' const nim = SDK.NIM.getInstance({ // ... }) // 如果只使用NIM,也可以只引入dist/SDK/NIM_Web_NIM import NIM from '@yxim/nim-web-sdk/dist/SDK/NIM_Web_NIM.js' const nim = NIM.getInstance({ // ... })
如果选用 webpack 或 babel 来打包,那么请使用 exclude 将 SDK 文件排除,避免 babel 二次打包引起的错误。
对应的 Webpack 配置:
javascript
// Webpack 参考配置 module: { rules: [ { test: /\.js$/, loader: 'babel-loader', exclude: '/node_modules/@yxim/nim-web-sdk', query: { presets: [ // ... ], // ... } // ... }, // ... ], // ... }
方式2:script 集成
-
前往云信 SDK 下载中心下载最新版 SDK。
SDK 下载中心默认只提供最新版 SDK。如需其他版本,请联系商务经理或技术支持获取。
-
解压 SDK。SDK 解压后可得到以下三个文件(配图仅以 v9.8.0 为例):
三个文件的说明如下:
├── NIM_Web_Chatroom.js 提供聊天室功能,浏览器适配版(UMD 格式) ├── NIM_Web_NIM.js 提供 IM 功能,包括单聊、会话和群聊等,但不包含聊天室。浏览器适配版(UMD 格式) ├── NIM_Web_SDK.js 提供 IM 功能和聊天室功能的集成包,浏览器适配版(UMD 格式)
-
将所需的 SDK 文件,传入
script
标签的src
中即可。在下文中使用 window 对象属性即可获取对 SDK 的引用。具体如何根据业务需求选择 SDK 文件及相关注意事项,请参见下文的SDK 文件选择。
javascript
<!-- 例如 --> <script src="NIM_Web_SDK_vx.x.x.js"></script>
SDK文件选择
请根据下表的说明引入您所需的 SDK 文件。初始化不同 SDK 文件,需调用不同的 SDK API。
业务需求 | 需引入的模块 | 初始化方法 |
---|---|---|
仅需常规 IM (单聊、群聊等) | NIM_Web_NIM_vX.X.X.js |
通过NIM.getInstance 方法初始化 IM 实例 |
仅需聊天室 | NIM_Web_Chatroom_vX.X.X.js |
通过Chatroom.getInstance 方法初始化聊天室实例 |
常规 IM 和聊天室都需要 | NIM_Web_SDK_vX.X.X.js |
|
引入 SDK 文件时,请勿同时引入以下两种文件组合:
NIM_Web_SDK_vX.X.X.js
和NIM_Web_Chatroom_v.X.X.X.js
NIM_Web_SDK_vX.X.X.js
和NIM_Web_NIM_vX.X.X.js
后续步骤
完成 SDK 集成后,需初始化并登录 IM。
相关信息
Demo 参考
云信在 Github 上提供了开源的 IM Demo(React / Vue),为您后续的 IM 集成提供参考。
SDK 使用须知
实例调用方式
集成 NIM SDK 后,所有 SDK 能力均通过 NIM SDK 单例调用,例如:
javascript // 引入SDK类的引用以后,获取SDK对象实例
var nim = SDK.NIM.getInstance({
debug: true,
appKey: appKey,
account: account,
token: token,
// ...
});
以发送点对点消息为例:
javascript var msg = nim.sendText({
scene: 'p2p',
to: account,
text: 'hello',
done: function sendMsgDone (error, msg) {
// ...
}
});
事件通知方式
NIM SDK 通过两种方式通知上层 API 调用结果:回调(callback
)和委托 (delegate
),两种方式都只在主线程触发。
- 一般回调接口直接反映在相应接口的
done
参数上,调用时设置即可。 - 委托则需要您在合适时机,在初始化异步监听函数上进行处理。
javascript // 委托通知示例
var nim = NIM.getInstance({
// ... 此处省略其他配置
onmsg: function (msg) {
// 此处为委托消息事件,消息发送成功后,成功消息也在此处处理
}
});
// 回调通知示例
var msg = nim.sendText({
scene: 'p2p',
to: account,
text: 'hello',
done: function sendMsgDone (error, msg) {
// 此处为回调消息事件,仅仅通知开发者,消息是否发送成功
}
});