多人互动白板会话功能

通过阅读本章节,您将快速了解多人互动白板的相关功能,并且能通过本章节中介绍的流程和接口快速搭建多人互动白板会话。多人互动白板,顾名思义,参与互动白板的有多方,SDK提供多人互动白板从创建白板会话加入会话会话互动解散会话整个过程的能力,包括创建多人白板会话、发送白板数据、结束白板等基础能力接口与异常流程控制与回调。 多人互动白板不配套提供语音通道,如果需要,可以与多人音视频通话功能结合使用,方便灵活满足各类音视频与白板相结合的多人场景。

sequenceDiagram participant A participant Conference participant B participant ... A->>Conference:预订多人实时会话(nim_rts_create_conf) A->>Conference:加入多人会话(nim_rts_join_conf) B->>Conference:加入多人会话(nim_rts_join_conf) Conference->>A:用户加入多人实时会话通知(nim_rts_member_change_cb_func) A->>Conference:发送多人会话数据(nim_rts_send_data) Conference->>A:接收多人实时会话数据(nim_rts_rec_data_cb_func) B->>B:异常离开多人实时会话通知(nim_rts_member_change_cb_func) Conference->>A:用户离开多人实时会话通知(nim_rts_member_change_cb_func) A->>Conference:离开多人实时会话(nim_rts_hangup)

预订多人实时会话

API介绍

在多人会话前需要通过此接口创建多人房间,之后以第一个加入的成员开始计算房间时间,直到最后一人退出。多人只有tcp模式。

API原型

参数说明

参数 类型 说明
name string 多人房间名
custom_info string 自定义数据,所有加入房间时会从回调中得到此字段
cb function 回调函数
参数 类型 说明
name string 多人房间名
custom_info string 自定义数据,所有加入房间时会从回调中得到此字段
cb function 回调函数
参数 类型 说明
name string 多人房间名
custom_info string 自定义数据,所有加入房间时会从回调中得到此字段
json_extension string 无效扩展字段
cb function 回调函数
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理

返回值说明

无返回值。

回调返回中417代表房间已经存在。其他非200是房间生成错误。

示例

加入多人会话

API介绍

加入多人会话。允许加入多个会话,但如果同一个房间名重复加入(session_id不同)则会导致

API原型

参数说明

参数 类型 说明
name string 多人房间名
session_id string 本地的一个通话标记
record bool 是否服务器录制
cb function 回调函数
参数 类型 说明
name string 多人房间名
json_extension string Json 扩展参数kNIMRtsDataRecord,kNIMRtsSessionId
cb function 回调函数
参数 类型 说明
name string 多人房间名
json_extension string Json 扩展参数kNIMRtsDataRecord,kNIMRtsSessionId
cb function 回调函数
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理
键常量名 键常量值 值类型 说明
kNIMRtsSessionId session_id string 发起会话的标识id,用于在关闭时做对应标识。
kNIMRtsDataRecord data_record int 是否需要服务器录制白板数据 >0表示是

返回值说明

无返回值。

示例

        std::string json;
        Json::Value values_temp;
        values_temp[nim::kNIMRtsDataRecord] = record ? 1 : 0;
        values_temp[nim::kNIMRtsSessionId] = session_id;
        Json::FastWriter fs;
        json = fs.write(values_temp);
        func("room name", json.c_str(), &OnJoinConfCb, NULL);
    }

发送多人会话数据

API介绍

发送数据,暂时支持tcp通道,建议发送频率在20Hz以下。

API原型

参数说明

参数 类型 说明
session_id string 本地的一个通话标记
channel_type int 会话类型,暂时只支持kNIMRtsChannelTypeTcp
data string tcp数据流
uid string 指定发送某人,不填则群发
参数 类型 说明
sessionId string 本地的一个通话标记
channelType int 会话类型
data IntPtr 数据指针
size int 数据长度
参数 类型 说明
session_id string 本地的一个通话标记
channel_type int 会话类型
accept bool 是否接起
data char* 数据指针
size int 数据长度
json_extension string 扩展参数kNIMRtsUid
键常量名 键常量值 值类型 说明
kNIMRtsUid uid string 用户账号uid

返回值说明

无返回值。

示例

特殊说明

白板数据当遇到网络异常时不能保证对方肯定收到,对需要高保障的数据,建议用户自己用数据流做回执保证。

收到多人会话数据回调

API介绍

收到其他人发给我的白板数据。

API原型

参数说明

参数 类型 说明
cb function 回调函数
参数 类型 说明
callback function 回调函数
sessionId string 本地的一个通话标记
channelType int 会话类型
uid string 对方id
data IntPtr 数据指针
size int 数据长度
参数 类型 说明
cb function 回调函数
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理

返回值说明

无返回值。

示例

    void OnReceiveRtsData(string sessionId, int channelType, string uid, IntPtr data, int size)
    {
        //收到uid的数据
        var content = Marshal.PtrToStringAnsi(data, size);
        //解析content,处理逻辑
    }
    void RegisterRtsCallback()
    {
        NIM.RtsAPI.SetReceiveDataCallback(OnReceiveRtsData);
    }

用户进出多人实时会话通知

API介绍

有成员进出时会通知上层,多人模式下只有tcp类型。

API原型

参数说明

参数 类型 说明
cb function 回调函数
参数 类型 说明
cb function 回调函数
sessionId string 本地的一个通话标记
channelType int 会话类型
type int 成员进出状态
uid string 对方id
参数 类型 说明
cb function 回调函数
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理
枚举定义 说明
kNIMRtsMemberStatusJoined 0 成员进入
kNIMRtsMemberStatusLeaved 1 成员退出

返回值说明

无返回值。

键常量名 键常量值 值类型 说明
kNIMRtsLeaveType leave_type int 客户端类型NIMRtsMemberLeftType
枚举定义 说明
kNIMRtsMemberLeftTimeout -1 成员超时掉线
kNIMRtsMemberLeftNormal 0 成员离开

示例

离开多人实时会话

API介绍

离开多人会话,清理会话。

API原型

参数说明

参数 类型 说明
session_id string 本地的一个通话标记
cb function 回调函数
参数 类型 说明
hangupResHandler function 回调函数
参数 类型 说明
session_id string 本地的一个通话标记
json_extension string 无效扩展
cb function 回调函数
user_data void* 注册回调时的APP自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理

返回值说明

无返回值。

示例

重连接口

API介绍

在会话过程中,主动重连会话。在会话过程中有效

API原型

参数说明

参数 类型 说明
session_id string 会话id
channel_type int 通道类型,暂时只支持白板类型
json_extension string 无效扩展
cb function 回调函数
user_data(C) void* APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!

返回值说明

调用结果返回见回调函数,连接结果监听connect回调

示例