Skip to content

直播间内弹幕聊天:流程&Data约定文档

1、基础约定

See 云信IM模块

2、聊天室消息流程概述

Phase Steps
初始化 初始化SDK->登录SDK->注册最近会话监听->新P2P消息监听、新聊天室消息监听
直播间内 开播/加入直播间后,使用获取到聊天室id加入聊天室
聊天室消息收发 -

3、聊天室消息内容数据格式约定

这里约定格式的消息内容使用的位置:

  1. 调用NIM SDK createChatRoomMsg,传入的text字符串内容符合以下约定的格式
  2. 获取NIMChatroomMessage的content字段的值,这个字符串的内容符合以下约定的格式
  3. 如果出现了不属于以下枚举的消息类型的,UI上不显示这条消息即可

4、createChatRoomMsg时增加Ext字段

字段增加方式参考云信IM模块的language如何加,下文只以Dart语言实例

    var result = await ChatroomMessageBuilder.createChatroomTextMessage(
      roomId: chatRoomId,
      text: text,
    );
    var remoteExtension = msg?.remoteExtension ?? {};
      remoteExtension.addAll({
        // 本机语言码
        "language": "zh",
        // 消息发送者头像url地址    
        "senderAvatar": "https://ssss",
        // 消息发送者昵称    
        "senderName": UserKit.user()?.name,
      });
      msg?.remoteExtension = remoteExtension;

1.文本消息

{
  "messageType": 0,
  "content": "文本消息内容",
  "roomId": "直播间id",
  "roomSessionId": "直播间场次id"
}

2.礼物消息

注意: 礼物消息客户端不主动发送,当产生了直播间的送礼请求后,Server会自动以[送礼者]的名义向聊天室发出礼物消息

{
  "messageType": 1,
  "content": "{\"giftId\": 123,\"name\": \"Lolipop\",\"num\": 1}"
}

3.xx用户加入直播间消息

在弹幕消息中显示"XX进入直播间"

这个消息由观众端在观众调用加入直播间成功、加入聊天室成功后主动发出

{
  "messageType": 3,
  "roomId": "直播间id",
  "roomSessionId": "直播间场次id"
}

4.直播间警告消息

由服务器主动发出,客户端只需要展示

{
  "messageType": 4,
  "content": "警告内容"
}

5.提醒关注主播消息

用户持续观看直播超过15s时,如果用户没有关注这个主播,那么手动向弹幕中插入一条消息,提醒用户关注当前主播

注意: 只是调用createChatRoomMsg生成消息后,插入到消息列表,不需要发出消息,这条消息只有当前观众自己可见

{
  "messageType": 5,
  "roomId": "直播间id",
  "roomSessionId": "直播间场次id"
}

6.已关注主播消息

用户在直播间内关注了主播时,向聊天室发送一条这样的消息,直播间全员可见,提示"xxx关注了xxx(主播)"

{
  "messageType": 6,
  "roomId": "直播间id",
  "roomSessionId": "直播间场次id",
  "content": "{\"nickname\":\"用户自己的昵称\",\"streamerName\": \"主播昵称\"}"
}