You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
7.1 KiB
Go

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