# @class100/webrtc

[demo](https://oss.dagouzhi.com/webrtc_demo)
## Getting started

`$ npm install @class100/webrtc --save`

## Usage
```javascript
import WebRTCSDk, { EVENT_TYPES } from '@class100/webrtc';

const appID = 'xxxxxx';
const token = 'xxxx';
cosnt uid = 1001;
const meetingNo = 1234;

async function init(webRtcType: string) {
  const client = new WebRTCSDk(webRtcType);
  await client.init(appID);

  client.on(EVENT_TYPES.userJoined, (uid) => {
    console.log('用户列表 ------ userJoined ------', uid)
  })
  client.on(EVENT_TYPES.userLeave, (uid) => {
    console.log('用户列表 ------ userLeave ------', uid)
  })
  await client.join(token, meetingNo, uid);
  await client.createRTCStream();
  await client.publish();
  return client;
}
<!-- web sdk -->
init('web');
<!-- electron sdk -->
init('electron');
```

## 方法
| 方法           |  描述         |
| ------------- | ------------- |
| init  | 初始化客户端对象  |
| join  | 加入 AgoraRTC 频道  |
| getDevices  | 该方法枚举可用的媒体输入/输出设备，比如麦克风、摄像头、耳机等。  |
| createRTCStream  | 创建流  |
| setupLocalVideo  | 设置本地视频显示  |
| setupRemoteVideo  | 设置远程视频显示  |
| publish  | 发布本地音视频流  |
| switchChannel  | 快速切换直播频道  |
| unpublish  | 取消发布本地音视频流  |
| subscribe  | 接收远端音视频流 |
| unsubscribe  | 取消接收远端音视频流  |
| setVideoDevice  | 设置视频设备  |
| setAudioPlaybackDevice  | 通过设备 ID 指定音频播放设备  |
| setAudioRecordingDevice  | 设备音频录制设备  |
| enableLocalVideo  | 开/关本地音频采集  |
| enableLocalAudio  | 开/关本地音频采集  |
| getScreenSources  | 该方法用于获取屏幕共享源  |
| createScreenStream  | 创建屏幕分享流  |
| screenPublish  | 屏幕分享流推送  |
| screenUnpublish  | 屏幕分享流取消推送  |
| leave  | 离开频道，即机挂断或退出通话  |
| on  | 监听  |
| destroy  | 销毁  |


## `on`监听
| 事件           |  描述         |
| ------------- | ------------- |
| joined  | 加入成功  |
| userJoined  | 用户加入  |
| userLeave  | 用户离开  |
| published  | 本地音视频流已发布  |
| unpublished  | 本地音视频流已取消发布  |
| error  | 应用有错误信息  |