GO-获取斗鱼弹幕消息

GO-获取斗鱼弹幕消息

斗鱼弹幕消息官方没有提供SDK,自己封装了GO的斗鱼弹幕消息包,下面介绍一下 github

安装:

1
go get -u github.com/itpika/douyumsg

使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package main

import (
"fmt"
"os"
"runtime"

"github.com/itpika/douyumsg/lib/logger"

"github.com/itpika/douyumsg"
)

func main() {
// 根据房间号码获取一个房间
room := douyumsg.NewRoom("276200")
// 与服务器建立连接
err := room.Run("openapi-danmu.douyu.com:8601")
if err != nil {
fmt.Println(err)
os.Exit(1)
}

room.SetHeart(7) // 设置心跳时间间隔,,默认30s
room.SetBarrageChanSize(200) // 设置弹幕消息channel大小,默认100
room.SetUserEnterChanSize(20) // 设置弹幕消息channel大小,默认50
room.SetAllMsgChanSize(400) // 设置弹幕消息channel大小,默认300
room.SetgiftChanSize(10) // 设置礼物消息channel大小,默认30
// 获取弹幕消息
go func() {
msg := room.ReceiveBarrage()
for {
m := <-msg
if m == nil {
println("弹幕消息队列关闭")
break
}
logger.Infof("等级:[%s] %s : %s\n", m["level"], m["nn"], m["txt"])
}
}()
// 获取礼物消息
go func() {
msg := room.Gify()
for {
m := <-msg
if m == nil {
println("礼物消息队列关闭")
break
}
logger.Infof("等级:[%s] %s 赠送了%s个礼物, %s连击\n", m["level"], m["nn"], m["gfcnt"], m["hits"])

}
}()
// 获取用户进入房间消息
go func() {
msg := room.UserEnter()
for {
m := <-msg
if m == nil {
println("进入房间队列关闭")
break
}
logger.Infof("等级:[%s] %s : 进入直播间\n", m["level"], m["nn"])
}
}()
// 获取所有消息,同样返回一个chan,需要自己对消息进行过滤处理,格式参考斗鱼弹幕服务器第三方接入协议v1.6.2.pdf
//for {
// msg := <-room.ReceiveAll(100)
// fmt.Println(msg)
//}
// room.Stop() 终止消息接收
runtime.Goexit()
}

运行:

作者

itpika

发布于

2020-07-30 15:45:02

更新于

2021-02-02 14:55:57

许可协议

评论