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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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