jarvis_rtc_client

Jarvis Rtc 客户端库

Usage no npm install needed!

<script type="module">
  import jarvisRtcClient from 'https://cdn.skypack.dev/jarvis_rtc_client';
</script>

README

Jarvis Rtc client

安装依赖: https://www.npmjs.com/package/jarvis_rtc_client

安装最新版本

npm i jarvis_rtc_client -S
yarn add jarvis_rtc_client -S

快速接入

// 引入依赖包
import JarvisRtcClient from "JarvisRtcClient"

let config = {
    // 自定义扩展参数
    extra: {
        name: '<name>',
        userId: '<userId>',
        other: '....',
        other2: '....'
    },
    session: {
        // 是否接受数据传输(必须为true)
        data: true,
        // 是否启用视频
        audio: false,
        // 是否启用音频
        video: false
    }
}

// 房间唯一id
let roomId = "xxx"

// 用于保存房间内所有在线用户列表信息
let roomUserList = []

// 连接host, 必须以 "/" 结尾
let connectionHost = "http://localhost:7001/"

RtcClient = new JarvisRtcClient(connectionHost, roomId, config);
// 打开调试模式
RtcClient.debug = true
RtcClient.on("onUserStatusChanged", this, useList => roomUserList = useList)
RtcClient.on("onMessage", this, msgObject => {})
RtcClient.on("onConnectionSuccess", this, () => {
    // todo 连接成功, 回调处理...
})

RtcClient.open()

方法

JarvisRtcClient

实例化 JarvisRtcClient

实例化JarvisRtcClient之前, 必须在构造函数中传入配置参数, 参数示例如下:

let config = {
    // 自定义扩展参数
    extra: {
        name: '<name>',
        userId: '<userId>',
        other: '....',
        other2: '....'
    },
    session: {
        // 是否接受数据传输(必须为true)
        data: true,
        // 是否启用视频
        audio: false,
        // 是否启用音频
        video: false
    }
}
/**
* connectionHost: 通讯服务端的host, 例如: http://localhost:7001/, 注意, 必须以 "/" 结尾
* roomId: 要进入或创建 的房间id, 客户端生成并传入
* config: 连接配置参数
*/
let RtcClient = new JarvisRtcClient(<connectionHost>, <roomId>, <config>)

open

建立连接

let RtcClient = new JarvisRtcClient(host, roomId, config);

RtcClient.on("onConnectionSuccess", this, () => {
    // connection success , do something...
})

RtcClient.open()

通过监听 onConnectionSuccess 事件, 加入连接成功后的逻辑

send

发送文本消息

连接成功后, 可以通过send方法发送通讯报文, 报文必须为字符串.
接收并处理消息, 可监听 onMessage 事件进行处理

let msgObject = {
    type: "M01",
    participant: null,
    from: that.userId,
    name: that.name,
    // data: { rtv: '' },
    data: "消息内容",
    time: new Date().getTime()
}
RtcClient.send(JSON.stringify(msgObject))
Param 中文 类型 描述
type 报文类型 String M01: 普通消息
participant 通道id String 通讯用户id, 统称 通道id
from 发送消息用户id String 平台用户id
name 发送者昵称 String 平台用户昵称
time 发送时间 Long 当前发送时间
data 发送消息体 String/Object 客户端自定义的消息体

disconnect

断开连接

当用户主动断开连接时, 可调用该方法与服务断断开连接

RtcClient.disconnect()

事件

事件监听通用配置:
如想监听 onUserStatusChanged 事件, 只需要添加如下代码即可:

/**
* eventName: 监听的事件名称
* self: 当前函数的作用域 this, 一搬传this即可
* callback: 事件回调函数
*/
RtcClient.on("onUserStatusChanged", that, useList => that.roomUserList = useList)

onUserStatusChanged

当用户状态改变时(上线或者离线), 服务端会通过该事件通知客户端. 客户端不需要维护当前房间的用户列表, 只需要监听 onUserStatusChanged事件, 并把回调的列表参数(用户列表)展现出来, 就可以了

示例demo:

// 该数组为当前房间内所有的用户列表信息
let roomUserList = []
RtcClient.on("onUserStatusChanged", that, useList => that.roomUserList = useList)

useList item示例:

[
    {
        status: "online",
        isEmcee: true,
        participant: "",
        extra: {
            userId: "",
            name: "",
            mail: ""
        }
    }
]

extra为用户建立连接前, 实例化时通过 config 配置的, 配置详情请点击这里

Name Type Mark
status String 用户状态: "offline", "online"
isEmcee Boolean 是否主持人
participant String 通讯用户id, 统称 通道id
extra Object
extra.userId String 用户id
extra.name String 用户昵称
extra.mail String 用户邮箱

onMessage

建立连接并连接正常时, 如房间内的其他用户发送消息, 则会在该事件中响应

onConnectionSuccess

客户端连接成功回调事件, 当用户加入房间或者创建房间成功, 都会通过该事件回调