16.消息通道
16.1. 概述
消息: 是通过消息通道传递的数据。消息包括两类: 普通消息和指令消息。
普通消息: 仅仅用于消息展示,如聊天信息。
指令消息: 是普通消息的扩展,既可以展示,又代表一定的业务意义,接收方需要根据需要对指令消息进行响应。
消息结构:
{
'name':'xxx',
'icon':'xxx',
'id':'xxx',
'content':'xxx',
'msgType':'normal'
}
name 发送者的昵称
icon 发送者头像
id 发送者编号(业务层面理解,如用户id)
content 发送的消息内容,可以是文本(如聊天内容),或对象
msgType 消息类型,省略该属性,或者值为 normal 表示发送的是普通消息(聊天消息)。当收到指令消息时,如果与自身相关则做出响应,否者忽略。
16.2.直播开始通知
用于直播开始通知。
-
请求
直播开始时,系统会向左右在直播界面的客户端发送一条直播开始的通知。
通知通过该直播课程的聊天消息通道发送。
结构如下:{"name":"管理员","icon":null,"id":"43","content":"直播开始了","msgType":"live_start"}
msgType 元素,值为“live_start”
- 客户端行为指南
客户端(PC或移动页面等)收到消息后,如果判断存在msgType=live_start的属性,则启动播放器播放直播流。
该消息可以直接在聊天界面显示,无需特殊过滤。
16.3. 视频互动
视频互动前,互动双方需要通过消息通道进行协商,建立双方视频互动的连接。
本小节定义视频互动建立连接的协商过程。
我们将视频互动的双方分别叫发起方和响应方。 首先发起互动邀请的一方叫发起方,另一方叫响应方。
协商流程:
1)发起方向响应方发起互动邀请
发起方------->响应方
2)响应方向发起方发送互动响应
响应方-------->发起方
3)发起方开启互动
发起方------->响应方
协商协议
1)发起方向响应方发起互动邀请
发起方------->响应方
{
'name':'王老师',
'icon':'xxx',
'id':'xxx',
'content':'王老师邀请大家参与视频互动!',
'msgType':'meeting_req'
}
业务处理: 响应方收到该消息后,首先判断终端环境是否具备视频互动条件,如果具备则显示一个“申请互动”的按钮,等待点击。 点击按钮后进入下一步流程。
2)响应方向发起方发送互动响应
响应方-------->发起方
{
'name':'小明同学',
'icon':'xxx',
'id':'xxx',
'content':'小明同学申请视频互动!',
'msgType':'meeting_res'
}
业务处理:发起方收到该消息后,应当将该用户头像加入申请用户的列表。点击用户头像进入下一步流程。
3)发起方开启会议
发起方------->响应方
{
'name':'王老师',
'icon':'xxx',
'id':'xxx',
'content':{'id':'xxx','name','myname','room':'xxx','pwd':'xxx'},
'msgType':'meeting_begin'
}
这里content是一个对象,包含允许互动用户的id和互动的房间号等。
id 允许互动的用户id
room 互动的房间号码
name 互动的姓名
pwd 互动的密码
业务处理:响应方收到该消息后,拉起视频互动界面,传入房间号、帐号、密码参数给视频互动系统,开始互动,
应确保将返回的content对象参数原样传递给信令服务器。
其他消息:
1)取消互动申请
发送互动申请的用户可以取消申请。
响应方-------->发起方
{
'name':'王老师',
'icon':'xxx',
'id':'xxx',
'content':'xxx',
'msgType':'meeting_res_cancel'
}
业务处理: 发起方收该消息后便知道用户撤销了互动申请,应将用户从申请列表中去掉。
2)终止互动
发起方随时可以终止互动。
发起方------->响应方
{
'name':'王老师',
'icon':'xxx',
'id':'xxx',
'content':'xxx',
'msgType':'meeting_end'
}
业务处理: 响应方收该消息后立即退出互动。