网易云信即时通讯 Web SDK,提供完善的即时通信功能开发框架,屏蔽其内部复杂细节,对外提供较为简洁的 API 接口,方便第三方应用快速集成即时通信功能。
安装
npm install @yxim/nim-web-sdk@latest
sdk 默认提供以下几种形式
dist/SDK
├── NIM_Web_Chatroom_miniapp.js 聊天室小程序适配版 UMD 格式
├── NIM_Web_Chatroom_nodejs.js 聊天室node适配版 UMD 格式
├── NIM_Web_Chatroom_rn.js 聊天室 React-Native 适配版 UMD 格式
├── NIM_Web_Chatroom.js 聊天室浏览器适配版 UMD 格式
├── NIM_Web_NIM_miniapp.js IM 小程序适配版 UMD 格式
├── NIM_Web_NIM_nodejs.js IM node 适配版 UMD 格式
├── NIM_Web_NIM_rn.js IM React-Native 适配版 UMD 格式
├── NIM_Web_NIM.js IM 浏览器适配版 UMD 格式
├── NIM_Web_SDK_miniapp.js 集成包小程序适配版 UMD 格式
├── NIM_Web_SDK_nodejs.js 集成包node适配版 UMD 格式
├── NIM_Web_SDK_rn.js 集成包 React-Native 适配版 UMD 格式
├── NIM_Web_SDK.js 集成包浏览器适配版 UMD 格式
- 使用 CommonJS 的模式进行引入,使用 webpack 的 dynamic requires 标准进行动态加载
- 示例代码
const SDK = require('@yxim/nim-web-sdk')
// 等效于
import SDK from '@yxim/nim-web-sdk'
// 若仅使用 IM 功能,则引入 IM 适配版
var NIM = require('@yxim/nim-web-sdk/dist/SDK/NIM_Web_NIM')
// 若使用聊天室能力则引入
var Chatroom = require('@yxim/nim-web-sdk/dist/NIM_Web_Chatroom')
- 示例代码
- NIM
// 初始化 NIM (可参考 https://doc.yunxin.163.com/docs/TM5MzM5Njk/zE0NDY4Njc?platformId=60179)
// NIM.getInstance接口为单例模式, 对于同一个账号, 永远返回同一份实例, 即只有第一次调用会初始化一个
var nim = NIM.getInstance({
debug: true, // 是否开启日志,将其打印到console。集成开发阶段建议打开。
appKey: 'appKey',
account: 'account',
token: 'token',
db:true, //若不要开启数据库请设置false。SDK默认为true。
// privateConf: {}, // 私有化部署方案所需的配置
onconnect: onConnect,
onwillreconnect: onWillReconnect,
ondisconnect: onDisconnect,
onerror: onError
});
function onConnect() {
console.log('连接成功');
}
function onWillReconnect(obj) {
// 此时说明 SDK 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
console.log('即将重连');
console.log(obj.retryCount);
console.log(obj.duration);
}
function onDisconnect(error) {
// 此时说明 SDK 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
console.log('丢失连接');
console.log(error);
if (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
break;
// 重复登录, 已经在其它端登录了, 请跳转到登录页面并提示错误
case 417:
break;
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
break;
default:
break;
}
}
}
function onError(error) {
console.log(error);
}
// 断开链接
nim.disconnect({
done(err) {
console.log('disconnect success', err)
}
})
// nim 实例销毁
nim.destroy({
done(err) {
console.log('desctroy success', err)
}
})
- 聊天室
// 初始化 Chatroom (可参考 https://doc.yunxin.163.com/docs/TM5MzM5Njk/zE0NDY4Njc?platformId=60179)
var chatroom = Chatroom.getInstance({
appKey: 'appKey',
account: 'account',
token: 'token',
chatroomId: 'chatroomId',
chatroomAddresses: [
'address1',
'address2'
],
onconnect: onChatroomConnect,
onerror: onChatroomError,
onwillreconnect: onChatroomWillReconnect,
ondisconnect: onChatroomDisconnect,
// 消息
onmsgs: onChatroomMsgs
});
function onChatroomConnect(obj) {
console.log('进入聊天室', obj);
// 连接成功后才可以发消息
var msg = chatroom.sendText({
text: 'hello',
done: function sendChatroomMsgDone (msgObj) {
}
})
}
function onChatroomWillReconnect(obj) {
// 此时说明 `SDK` 已经断开连接, 请开发者在界面上提示用户连接已断开, 而且正在重新建立连接
console.log('即将重连', obj);
}
function onChatroomDisconnect(error) {
// 此时说明 `SDK` 处于断开状态, 开发者此时应该根据错误码提示相应的错误信息, 并且跳转到登录页面
console.log('连接断开', error);
if (error) {
switch (error.code) {
// 账号或者密码错误, 请跳转到登录页面并提示错误
case 302:
break;
// 被踢, 请提示错误后跳转到登录页面
case 'kicked':
break;
default:
break;
}
}
}
function onChatroomError(error, obj) {
console.log('发生错误', error, obj);
}
function onChatroomMsgs(msgs) {
console.log('收到聊天室消息', msgs);
}
// 离开聊天室
chatroom.disconnect({
done(err) {
console.log('disconnect success', err)
}
})
// 销毁聊天室实例
chatroom.destroy({
done(err) {
console.log('desctroy success', err)
}
})
IM
聊天室
其他