# mayun_sdk

> [TOC]

Latest version **1.1.5** (published 2020-02-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install mayun_sdk
pnpm add mayun_sdk
yarn add mayun_sdk
bun add mayun_sdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.5 |
| Published | 2020-02-15 |
| First published | 2019-05-07 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 848.1 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | begoliu |
| Maintainers | begoliu |

## Links

- npm: https://www.npmjs.com/package/mayun_sdk
- npm.io page: https://npm.io/package/mayun_sdk

## Dependencies (8)

- [ws](https://npm.io/package/ws.md) ^6.2.0
- [uuid](https://npm.io/package/uuid.md) ^3.3.2
- [video.js](https://npm.io/package/video.js.md) ^7.5.4
- [ua-device](https://npm.io/package/ua-device.md) ^0.1.10
- [websocket](https://npm.io/package/websocket.md) ^1.0.28
- [webrtc-adapter](https://npm.io/package/webrtc-adapter.md) ^7.3.0
- [socket.io-client](https://npm.io/package/socket.io-client.md) ^2.2.0
- [websocket-as-promised](https://npm.io/package/websocket-as-promised.md) ^0.9.0

## Recent versions

- 1.1.5 (latest) — 2020-02-15
- 1.1.4 — 2020-01-07
- 1.1.3 — 2020-01-07
- 1.1.2 — 2019-08-28
- 1.1.1 — 2019-08-23
- 1.1.0 — 2019-08-16
- 1.0.2 — 2019-06-20
- 1.0.1 — 2019-05-08
- 1.0.0 — 2019-05-07

## README

[TOC]

## H5-SDK-WEBRTC 接口文档 v1.1.1(2019-08-15更新)

### 1 - 更新要点:

- connect 废弃回调 ,采用promise

- connect 参数传参的方式变更,以及增加了userId

  ```{js}
  例:
  gp.connect({
      devId:"B2E84A45BDF8",
      token:"FC85E15F7C5DCD7DC1D6127DC957307B",
      userId:"MaYun1565854673256",
  },"remoteVideo")
  ```

- init增加cover,log参数

  `cover`: 默认false,  不支持自动播放的时候 , 为true时会存在一个点击的遮照 , 为false时,connect时会为其反回一个10052的错误码去自定义点击遮罩

  `log`: 默认false, 为true时可打印日志交互日志,   为false时,取消

- isSupportRTC  是否支持webRTC

  ```{js}
  let res = gp.isSupportRTC;
  {code:***, msg:***}
  状态码说明:
  	code:0  支持webRTC
  	code:-1  不支持webRTC
  ```



### 2 - 摘要

- 兼容性问题

- 安全性

- 状态码说明

  ```{js}

  0#成功
  -1#其它错误
  ---------------------------------------
  1001x:初始化传参相关错误
  10011#ws地址格式错误
  10012#wss地址格式错误
  10013#设置窗体失败，采用默认窗体
  10014#缺少必填参数
  10015#sdk实例化失败，缺少必填参数
  ---------------------------------------
  1002x:设备相关错误
  #10021#待定 (目前不存在该状态)
  10022#设备不可用,未注册
  10023#设备被占用
  10024#设备离线，断开
  10025#token校验失败
  10026#OS类型未找到
  ---------------------------------------
  1003x:连接相关错误
  10031#信令未连接
  10032#客户端与信令断开
  10033#设备未连接
  10034#连接超时，断开
  10035#服务端视频流开关已关闭
  ---------------------------------------
  1004x:监听日志状态码
  10041#监听操作相关信息
  10042#rtc相关信息,每20s更新一次

  1005x:渲染相关状态码
  10051#不支持自动播放
  10052#加载画面失败,请联系码云code:10052
  ```



  注释: 错误状态码可能后续会有更新




### 3 - 兼容性

> 目前最新版本对浏览器支持情况如下:

| 平台 | chrome58+ | Safari 11+ | 微信浏览器 | QQ浏览器 | 360浏览器(最新) |
| :-----------: | :------: |:---:| :-----------: | :------: |:---:|
| __Android__ |  √   | × | √ | × | √ |
|__IOS__|√|√|×|?|?|
|__macOS__|×|×|×|×|×|
|__Windows__|√|×|×|×|×|

**<u>浏览器说明 :</u>**

1. 测试安卓手机厂商中自带浏览器 : 小米浏览器,华为浏览器,魅族浏览器都是不支持的（这部分浏览器可能也是基于chrome内核，但是此类浏览器是不支持的）
2. ？ - 代表着目前还不确认
3. 360浏览器android平台，部分设备会出现音频声音暂小或无的情况



### 4 - 使用环境

#### 4.1 - 引入方式

> 加载SDK前，先引用 ： https://webrtc.github.io/adapter/adapter-latest.js

| 调用环境    | 格式   |地址|
| ----------- | ------ |---|
| __browser__ | js文件 |<http://www.288.com/sdk/js/gp.min.js>|
| __node__ | npm包 |npm install mayun_sdk|

### 5 - 接口介绍

> 回调说明

```{js}
{
    code:0,
    msg:"------------"
}
or
{
    code:0,
    data:[] / {} / "" / 12
    msg:"------------"
}
  ```



#### 5.1 - SDK实例创建

> brower 和 npm实例创建代码如下:

```{js}
 #brower
 1. <script type="text/script" src="http://www.288.com/sdk/js/gp.min.js"></script>
 2. let gp = new MaYun(options,,fnSuc,fnErr);
 #npm
 1. npm install mayun_sdk
 2. import MaYun from 'mayun_sdk';
 3. let gp = new MaYun(options,fnSuc,fnErr);
```

-  options参数说明

```{js}
let options = {
    ws:`http下的信令地址`  //http下必填
    wss:`https下的信令地址`    //https下必填
    iceServers:{
    	stun:{
            uri:"stun:p2p地址",
        },
        turn_udp:{
            uri:"turn:转发地址?transport=udp",
                username:"demo",
                    credential:"123456"
        },
        turn_tcp:{
            uri:"turn:转发地址?transport=tcp",
            username:"demo",
            credential:"123456"
        }
	},   //必填
    timeout:20*1000    //连接超时时间, 非必填  默认30*1000
    screen:{
    	width:720
    	height:360
	},
    log:true | false {默认: false}  //内部日志的打印
	cover:true | false {默认:false}  //如有不支持自动播放,true会有一个遮照来点击播放, false会为你返回一个10051错误码,自己定义遮照点击处理
}

/*
	- ws : http下的信令连接
	- wss : https下的信令连接
	- iceServers ： 转发、p2p服务器地址配置
	- screen : 窗体大小 比例16:9
*/
```

- fnSuc 参数

  | 状态码 | 说明                                           |
  | ------ | ---------------------------------------------- |
  | 0      | SDK实例初始化成功  ,可能会出现10013状态        |
  | 10013  | 设置窗体失败，采用默认窗体   该状态会出现0状态 |
  | 10014  | 缺少必填参数                                   |



#### 5.2 - 浏览器是否支持

> isSupportRTC-  是否支持webRTC

```js
let res = gp.isSupportRTC;

/**
 ** res {code:***, msg:***} 状态码说明:
	code:0  支持webRTC
	code:-1  不支持webRTC
*/
```



#### 5.3 - 连接云设备

> connect - 连接云设备

```{js}
/*
* 连接云设备
* @param options 连接所需要的参数
* @param ele[string] 节点id
* @returns {Promise<void>}
*/
#推荐
gp.connect(options,ele).then(data => {
    /**
    	data状态码说明：
    	0 - 连接成功
    	10014 - 缺少必填参数
    	10015 - sdk实例化失败，缺少必填参数
    	10021 - 设备被占用,连接失败
		10022 - 设备不可用,未注册
    	10025 - token校验失败
    	10031 - 信令未连接
    	10034 - 连接超时，断开


    */
}).catch(err => {
    ...
})
或
gp.connect(devId,token,ele,success,error)  //遗弃

--------------options参数介绍begin-----------------
# devId(String) - 云设备ID
# token(String) - token校验
# userId(String) - 连接的用户ID
例: {
    devId:'B2E84A45BDF8',
    token:'A37D6DBFCDBB4DC2C97C83E4A98EEED8',
    userId:'MaYun1565840775686'
}
---------------------end----------------------------



```

- data
| 状态码 | 说明                        |
| ------ | --------------------------- |
| 0      | 连接成功                    |
| 10014  | 缺少必填参数                |
| 10015  | sdk实例化失败，缺少必填参数 |
| 10022  | 设备不可用,未注册           |
| 10023  | 设备被占用                  |
| 10025  | token校验失败               |
| 10031  | 信令未连接                  |
| 10034  | 连接超时，断开              |
| 10035  | 服务端视频流开关已关闭      |
| 10051  | 不支持自动播放              |
| 10052  | 加载页面失败                |





#### 5.4 - 监听云设备是否断开或连接超时

> onServiceStatus

```js
/*
* 监听云设备是否断开
* @param event[json] 状态消息
*/
gp.onServiceStatus(event => {
    console.log("onStatus --- ", event);
});
```

| 状态码 | 说明                                               |
| ------ | -------------------------------------------------- |
| 10024  | 设备离线，断开  (2s可做连接操作,) - 重要           |
| 10032  | web客户端与信令断开                                |
| 10035  | 服务端视频流开关已关闭 -  SDK会自动断开视频流      |
| 10041  | 操作相关信息 - 目前无实际作用,只是查看相关操作信息 |
| 10042  | rtc相关信息,每20s更新一次(无实际作用,辅助日志)     |

``` js
{
    code: 10041
    data: {type: "down", dot: 1, mouses: [{x: 195, y: 83.5}]}
    msg: "操作成功"
}
```



#### 5.5 - 断开连接

> disconnect

```js
gp.disconnect().then(data => {
    /**
    	data状态码说明
    	0 - 断开成功
    */
});
```



#### 5.6 - 操作流 - 指令处理

##### 5.6.1 - 按键综合处理

- type - 按键类型　String

  `back `:  返回键

  `home`:  home键   ｛功能禁用｝

  `menu`: menu键    ｛功能禁用｝

  `volume_up`: 音量增加

  `volume_down`: 音量减少

```{js}
gp.onKeys(type,success,error);
# type(String) - 按键类型
# success(fun) - 操作成功回调
# error(fun) - 操作失败回调
```

##### 5.6.2 - Back返回键

```{js}
gp.onKeysBack(success,error);
# success(fun) - 操作Back成功回调
# error(fun) - 操作Back失败回调
```



##### 5.6.3 - 音量+，音量-

```{js}
gp.onKeysVolAdd(success,error);
# success(fun) - 操作Back成功回调
# error(fun) - 操作Back失败回调

gp.onKeysVolReduce(success,error);
# success(fun) - 操作Back成功回调
# error(fun) - 操作Back失败回调
```



##### 5.6.4 - Home键

> 暂未开放

```{js}
gp.onKeysHome(success,error);
// success(fun) - 操作Back成功回调
// error(fun) - 操作Back失败回调
```

##### 5.6.5 - Menu (Recent)

> 暂未开放

```{js}
gp.onKeysMenu(success,error);
// success(fun) - 操作Back成功回调
// error(fun) - 操作Back失败回调
```

### 6. 更新记录
#### v1.1.2
- 修复加载连接,会出现坐标不正确的问题
- 坐标计算调整 16:9 调整为 640:368 (协议包1.2.2.111以上版本)

---
_Source: https://npm.io/package/mayun_sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
