kit-room-web
TypeScript icon, indicating that this package has built-in type declarations

0.0.10 • Public • Published

Kit-Room-Web

网易云信房间 sdk,内部融合了 G2音视频sdkIM sdk白板sdk,帮助用户更快接入使用云信能力。

下载

$ npm install kit-room-web --save

引入

import RoomKit from 'kit-room-web'

const roomkit = new RoomKit()
// 初始化
roomkit.initialize({
  debug: true, // 是否开启调试模式
  appKey, // 云信 appkey
  deviceId, // 设备唯一id
  baseDomain, // 请求的domain地址,可不填
}

接口说明

/**
 * 初始化
 * @param config
 * @returns {Promise<void>}
 */
initialize(params: {
  debug: boolean // 是否开启调试模式
  appKey: string // 云信 appkey
  deviceId: string // 设备唯一id
  baseDomain?: string // 请求的domain地址,可不填
}): void

// 销毁
release(): void

// 获取用于创建或加入房间的房间服务
getRoomService(): RoomServiceImpl

// 获取用于查询账号信息的账号服务
getAuthService(): AuthServiceImpl

// 获取房间设置服务
getSettingsService(): SettingServiceImpl

// 获取房间前服务
getPreRoomService(): PreRoomServiceImpl

// 获取房间内服务
getInRoomService(): InRoomServiceImpl

// 获取内部IM实例
getImImpl(): IMImpl

// 获取内部RTC实例
getRtcImpl(): RtcImpl

详细接口文档可参考roomkit 接口文档

如何快速跑通音视频能力

以下对如何利用 roomkit 快速跑通云信能力做一些说明

登录

roomkit.getAuthService().loginWithAccount({
  username: '',
  password: '',
})

创建/加入 房间

// 创建房间
roomkit.getRoomService().startRoom(
  {
    roomId: '', // 房间id,可不填,服务器自动分配
    nickName: '', // 用户昵称
    tag: '', // 用户标签,可不填
  },
  {
    noAudio: false, // 不开启音频,默认不开启
    noVideo: false, // 不开启视频,默认不开启
    noCloudRecord: false, // 不开启屏幕录制,默认不开启
  }
)

// or 加入房间
roomkit.getRoomService().joinRoom(
  {
    roomId: '', // 房间id
    nickName: '', // 用户昵称
    tag: '', // 用户标签,可不填
  },
  {
    noAudio: false, // 不开启音频,默认不开启
    noVideo: false, // 不开启视频,默认不开启
    noCloudRecord: false, // 不开启屏幕录制,默认不开启
  }
)

播放本端音视频并推流

在创建或加入房间后,可播放本端并推流

// 获取本端视频渲染的dom节点
const localView = document.getElementById('localView')
// 获取房间内服务实例
const inRoomService = roomkit.getInRoomService()
// 获取本端userId
const userId = inRoomService.getMyUserId()
// 播放并推流
inRoomService
  .getInRoomVideoController()
  .attachRendererToUserVideoStream(localView, userId)

订阅并播放远端音视频

通过房间内服务监听远端用户加入和流信息变化事件,来订阅并播放远端音视频

// 获取房间内服务实例
const inRoomService = roomkit.getInRoomService()

// 监听用户加入
inRoomService.on('onRoomUserJoin', (userList: NERoomMemberInfo[]) => {
  // 获取远端视频容器节点
  const remoteContainer = document.getElementById('remoteContainer')
  // 插入每个用户dom节点,唯一标识建议使用avRoomUid
  userList.forEach((userInfo) => {
    const remoteView = document.createElement('div')
    remoteView.id = `remoteView-${userInfo.avRoomUid}`
    remoteContainer.appendChild(remoteView)
  })
})

// 监听远端推流事件
inRoomService.on('onRoomUserStreamAdded', async (event) => {
  // 订阅该流
  const avRoomUid = event.stream.getId()
  await inRoomService.getInRoomVideoController().subscribeRemoteVideo(
    event.userId || '', // userId
    true, // 是否订阅
    avRoomUid // avRoomUid
  )
})

// 监听远端流订阅成功事件
inRoomService.on('onRoomUserStreamSubscribed', (event) => {
  const avRoomUid = event.stream.getId()
  // 获取远端视频渲染的dom节点
  const remoteView = document.getElementById(`remoteView-${avRoomUid}`)
  // 播放远端音视频
  inRoomService
    .getInRoomVideoController()
    .attachRendererToUserVideoStream(remoteView, event.userId, avRoomUid)
})

Dependents (1)

Package Sidebar

Install

npm i kit-room-web

Weekly Downloads

1

Version

0.0.10

License

ISC

Unpacked Size

9.78 MB

Total Files

56

Last publish

Collaborators

  • netease-yunxin