Pulsar 消息格式
用户元信息推送
此为 WebSocket 接口。
接口路径: /websocket/reader/persistent/public/default/user_{room}?messageId=earliest&token=YOUR_PULSAR_TOKEN
推送下行数据中properties字段类型为UserProperties,描述用户信息元数据,如下:
id用户标识符,与弹幕显示元数据对应nickname用户微信昵称headimgurl用户头像URL
弹幕接入点
此为 WebSocket 接口。
接口路径:
- Consumer(实时弹幕)
/websocket/consumer/persistent/public/default/{room}/{subscription}
- Reader(历史弹幕)
/websocket/reader/persistent/public/default/{room}?messageId=earliest&token=YOUR_PULSAR_TOKEN
格式样例
{
'messageId': 'CBAQAiAAMAE=' // 仅用于ack
'payload': 'AAAA', // 新弹幕, AAAB表示弹幕更新
'properties':
{
'content': '{content}',
'id': 'UMwXbJ7xE5xC4rJl8VZ8ZcUZ5n+qWs5I', // base64随机ID,几乎不可能碰撞
'sender': 'user_{wx_openid}', // 管理员弹幕以admin_开头
'permission': '1', // 字符串'1'表示审核通过,字符串'0'表示审核不通过
'color': 'undefined', // 'undefined'由显示端决定, 或十六进制颜色码如'FFFFFF'
'size': '16pt',
'pos': 'rightleft', // 'top', 'bottom', 'rightleft'
},
'publishTime': '2021-11-21T10:56:25.798Z',
'redeliveryCount': 0,
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
弹幕投放的实现逻辑
- 如果权限字段是"0",且为弹幕更新请求(AAAB),立刻撤下对应弹幕
- 如果权限字段是"1",不论请求类型是AAAA还是AAAB,都使得消息体中弹幕上屏
WebSocket API 鉴权细节
- 客户端/前端通过 dashboard 的
client-login接口,以房间号和密码换取 Pulsar 的 JWT; - 以上述 JWT 连接 Pulsar; WebSocket 的 JWT 通过 query 参数
token传递