|
|
package douyu
|
|
|
|
|
|
// 弹幕服务器端相应消息类型
|
|
|
const (
|
|
|
// TypeLoginRes 登录响应消息 字段说明
|
|
|
// type 表示为“登出”消息,固定为 loginres
|
|
|
// userid 用户 ID
|
|
|
// roomgroup 房间权限组
|
|
|
// pg 平台权限组
|
|
|
// sessionid 会话 ID
|
|
|
// username 用户名
|
|
|
// nickname 用户昵称
|
|
|
// live_stat 直播状态
|
|
|
// is_illegal 是否合规
|
|
|
// is_signed 是否已在房间签到
|
|
|
// signed_count 日总签到次数
|
|
|
// npv 是否需要手机验证
|
|
|
// best_dlev 最高酬勤等级
|
|
|
// cur_lev 酬勤等级
|
|
|
TypeLoginRes = "loginres"
|
|
|
|
|
|
// TypeNewGift 赠送礼物消息
|
|
|
// 用户在房间赠送礼物时,服务端发送此消息给客户端。完整的数据部分应包含的 字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“赠送礼物”消息,固定为 dgb
|
|
|
// rid 房间 ID
|
|
|
// gid 弹幕分组 ID
|
|
|
// gfid 礼物 id
|
|
|
// gs 礼物显示样式
|
|
|
// uid 用户 id
|
|
|
// nn 用户昵称
|
|
|
// str 用户战斗力
|
|
|
// level 用户等级
|
|
|
// dw 主播体重
|
|
|
// gfcnt 礼物个数:默认值 1(表示 1 个礼物)
|
|
|
// hits 礼物连击次数:默认值 1(表示 1 连击)
|
|
|
// dlv 酬勤头衔:默认值 0(表示没有酬勤)
|
|
|
// dc 酬勤个数:默认值 0(表示没有酬勤数量)
|
|
|
// bdl 全站最高酬勤等级:默认值 0(表示全站都没有酬勤)
|
|
|
// rg 房间身份组:默认值 1(表示普通权限用户)
|
|
|
// pg 平台身份组:默认值 1(表示普通权限用户)
|
|
|
// rpid 红包 id:默认值 0(表示没有红包)
|
|
|
// slt 红包开启剩余时间:默认值 0(表示没有红包)
|
|
|
// elt 红包销毁剩余时间:默认值 0(表示没有红包)
|
|
|
TypeNewGift = "dgb"
|
|
|
|
|
|
// TypeUserEnter 特殊用户进房通知消息
|
|
|
// 具有特殊属性的用户进入直播间时,服务端发送此消息至客户端。完整的数据部 分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“用户进房通知”消息,固定为 uenter
|
|
|
// rid 房间 ID
|
|
|
// gid 弹幕分组 ID
|
|
|
// uid 用户 ID
|
|
|
// nn 用户昵称
|
|
|
// str 战斗力
|
|
|
// level 新用户等级
|
|
|
// gt 礼物头衔:默认值 0(表示没有头衔)
|
|
|
// rg 房间权限组:默认值 1(表示普通权限用户)
|
|
|
// pg 平台身份组:默认值 1(表示普通权限用户)
|
|
|
// dlv 酬勤等级:默认值 0(表示没有酬勤)
|
|
|
// dc 酬勤数量:默认值 0(表示没有酬勤数量)
|
|
|
// bdlv 最高酬勤等级:默认值 0(表示全站都没有酬勤)
|
|
|
TypeUserEnter = "uenter"
|
|
|
|
|
|
// TypeNewDeserve 用户赠送酬勤通知消息
|
|
|
// 用户赠送酬勤时,服务端发送此消息至客户端。完整的数据部分应包含的字段如 下:
|
|
|
// 字段说明
|
|
|
// type 表示为“赠送酬勤通知”消息,固定为 bc_buy_deserve
|
|
|
// rid 房间 ID
|
|
|
// gid 弹幕分组 ID
|
|
|
// level 用户等级
|
|
|
// cnt 赠送数量
|
|
|
// hits 赠送连击次数
|
|
|
// lev 酬勤等级
|
|
|
// sui 用户信息序列化字符串,详见下文。注意,此处为嵌套序列化,需注 意符号的转义变换。(转义符号参见 2.2 序列化)
|
|
|
TypeNewDeserve = "bc_buy_deserve"
|
|
|
|
|
|
// TypeLiveStatusChange 房间开关播提醒消息
|
|
|
// 房间开播提醒主要部分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“房间开播提醒”消息,固定为 rss
|
|
|
// rid 房间 id
|
|
|
// gid 弹幕分组 id
|
|
|
// ss 直播状态,0-没有直播,1-正在直播
|
|
|
// code 类型
|
|
|
// rt 开关播原因:0-主播开关播,其他值-其他原因
|
|
|
// notify 通知类型
|
|
|
// endtime 关播时间(仅关播时有效)
|
|
|
TypeLiveStatusChange = "rss"
|
|
|
|
|
|
TypeRankList = "ranklist" // 广播排行榜消息
|
|
|
|
|
|
// TypeMsgToAll 超级弹幕消息(如,火箭弹幕)
|
|
|
// 超级弹幕主要部分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“超级弹幕”消息,固定为 ssd
|
|
|
// rid 房间 id
|
|
|
// gid 弹幕分组 id
|
|
|
// sdid 超级弹幕 id
|
|
|
// trid 跳转房间 id
|
|
|
// content 超级弹幕的内容
|
|
|
TypeMsgToAll = "ssd"
|
|
|
|
|
|
// TypeMsgToRoom 房间内礼物广播
|
|
|
// 房间内赠送礼物成功后效果主要部分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“房间内礼物广播”,固定为 spbc
|
|
|
// rid 房间 id
|
|
|
// gid 弹幕分组 id
|
|
|
// sn 赠送者昵称
|
|
|
// dn 受赠者昵称
|
|
|
// gn 礼物名称
|
|
|
// gc 礼物数量
|
|
|
// drid 赠送房间
|
|
|
// gs 广播样式
|
|
|
// gb 是否有礼包(0-无礼包,1-有礼包)
|
|
|
// es 广播展现样式(1-火箭,2-飞机)
|
|
|
// gfid 礼物 id
|
|
|
// eid 特效 id
|
|
|
TypeMsgToRoom = "spbc"
|
|
|
|
|
|
// TypeNewRedPacket 房间用户抢红包
|
|
|
// 房间赠送礼物成功后效果(赠送礼物效果,连击数)主要部分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示“房间用户抢红包”信息,固定为 ggbb
|
|
|
// rid 房间 id
|
|
|
// gid 弹幕分组 id
|
|
|
// sl 抢到的鱼丸数量
|
|
|
// sid 礼包产生者 id
|
|
|
// did 抢礼包者 id
|
|
|
// snk 礼包产生者昵称
|
|
|
// dnk 抢礼包者昵称
|
|
|
// rpt 礼包类型
|
|
|
TypeNewRedPacket = "ggbb"
|
|
|
|
|
|
// TypeRoomRankChange 房间内top10变化消息
|
|
|
// 房间内 top10 排行榜变化后,广播。主要部分应包含的字段如下:
|
|
|
// 字段说明
|
|
|
// type 表示为“房间 top10 排行榜变换”,固定为 rankup
|
|
|
// rid 房间 id
|
|
|
// gid 弹幕分组 id
|
|
|
// uid 用户 id
|
|
|
// drid 目标房间 id
|
|
|
// rt 房间所属栏目类型
|
|
|
// bt 广播类型:1-房间内广播,2-栏目广播,4-全站广播
|
|
|
// sz 展示区域:1-聊天区展示,2-flash 展示,3-都显示
|
|
|
// nk 用户昵称
|
|
|
// rkt top10 榜的类型 1-周榜 2-总榜 4-日榜
|
|
|
// rn 上升后的排名
|
|
|
TypeRoomRankChange = "rankup"
|
|
|
)
|
|
|
|
|
|
// 消息体类型
|
|
|
const (
|
|
|
TypeMessageToServer uint16 = 689
|
|
|
TypeMessageFromServer = 690
|
|
|
)
|
|
|
|
|
|
const EndCharacter byte = 0
|
|
|
|
|
|
// TagName 序列化tag
|
|
|
const TagName = "stt"
|
|
|
|
|
|
type TypedData interface {
|
|
|
DataType() string
|
|
|
}
|
|
|
|
|
|
// WsEntry douyu websocket 结构 小端序
|
|
|
type WsEntry struct {
|
|
|
// 消息正文 斗鱼STT协议 外部使用工具将 struct 转 map
|
|
|
// 键 key 和值 value 直接采用‘@=’分割
|
|
|
// 数组采用‘/’分割
|
|
|
// 如果 key 或者 value 中含有字符‘/’,则使用‘@S’转义
|
|
|
// 如果 key 或者 value 中含有字符‘@’,使用‘@A’转义举例:
|
|
|
// (1) 多个键值对数据:key1@=value1/key2@=value2/key3@=value3/
|
|
|
// (2) 数组数据:value1/value2/value3/
|
|
|
data []byte
|
|
|
dataType string
|
|
|
|
|
|
// msgType 消息类型,2字节小端整数,表示消息类型。取值如下:
|
|
|
// 689 客户端发送给弹幕服务器的文本格式数据
|
|
|
// 690 弹幕服务器发送给客户端的文本格式数据。
|
|
|
msgType uint16
|
|
|
secret byte // 加密字段,1字节,暂时未用,默认为0
|
|
|
reserved byte // 保留字段,1字节,暂时未用,默认为0
|
|
|
//ending byte // 结尾字段,1字节 必须'\0'
|
|
|
}
|