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'
        }

业务处理: 响应方收该消息后立即退出互动。