直播间内弹幕聊天:流程&Data约定文档
1、基础约定
See 云信IM模块
2、聊天室消息流程概述
| Phase | Steps |
|---|---|
| 初始化 | 初始化SDK->登录SDK->注册最近会话监听->新P2P消息监听、新聊天室消息监听 |
| 直播间内 | 开播/加入直播间后,使用获取到聊天室id加入聊天室 |
| 聊天室消息收发 | - |
3、聊天室消息内容数据格式约定
这里约定格式的消息内容使用的位置:
- 调用NIM SDK createChatRoomMsg,传入的text字符串内容符合以下约定的格式
- 获取NIMChatroomMessage的content字段的值,这个字符串的内容符合以下约定的格式
- 如果出现了不属于以下枚举的消息类型的,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\": \"主播昵称\"}"
}