8.9.108 • Published 1 year ago

@mrtujiawei/sdk-yxim-web v8.9.108

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

网易云信即时通讯 Web SDK,提供完善的即时通信功能开发框架,屏蔽其内部复杂细节,对外提供较为简洁的 API 接口,方便第三方应用快速集成即时通信功能。

由于 package.jsontypes 字段有问题,导致无法正确识别类型, 反馈一段时候后没有处理,因此暂时发布一个修改过的包, 等以后,修复了类型问题后,再改为原始的包

安装

npm install @yxim/nim-web-sdk@latest

sdk 选择

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 格式

SDK的引入

  • 使用 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')

SDK的初始化

  • 示例代码
  • 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

聊天室

其他