import (
"time"
+ tmplKV "github.com/qydysky/part/tmplKV"
mq "github.com/qydysky/part/msgq"
s "github.com/qydysky/part/buf"
log "github.com/qydysky/part/log"
//200长度防止push击穿
var Danmu_Main_mq = mq.New(200)
+//调用记录
+var Bootmap = tmplKV.New_tmplK(50,60*60)
+//1h中允许50个不同key(函数设置字段)-id(对应对话id)
+
//日志
var Log = log.New(log.Config{
File:`danmu.log`,
if o.Parent_area_id == -1 {apilog.L(`E: `,`失败!未获取Parent_area_id`);return}
if o.Area_id == -1 {apilog.L(`E: `,`失败!未获取Area_id`);return}
if api_limit.TO() {apilog.L(`E: `,`超时!`);return}//超额请求阻塞,超时将取消
+ func_id := c.Bootmap.Set(`api.F_x25Kn`)//获取函数调用会话id
{//查看今天小心心数量
var num = 0
apilog.L(`I: `,`今天小心心已满!`);return
} else {
apilog.L(`I: `,`今天已有`,num,`个小心心,开始获取`)
+ defer apilog.L(`T: `,`退出`)
}
}
}
{//初始化
+ if !c.Bootmap.Check(`api.F_x25Kn`, func_id) {apilog.L(`I: `,`多余退出`);return}//有新会话产生,旧的退出
PostStr := `id=[`+strconv.Itoa(o.Parent_area_id)+`,`+strconv.Itoa(o.Area_id)+`,`+strconv.Itoa(loop_num)+`,`+strconv.Itoa(o.Roomid)+`]&`
PostStr += `device=["`+LIVE_BUVID+`","`+new_uuid+`"]&`
PostStr += `ts=`+strconv.Itoa(int(p.Sys().GetMTime()))
}
{//loop
- var cancle = make(chan struct{},1)
- //使用带tag的消息队列在功能间传递消息
- c.Danmu_Main_mq.Pull_tag(map[string]func(interface{})(bool){
- `change_room`:func(data interface{})(bool){//换房时退出当前房间
- close(cancle)
- return true
- },
- })
-
- defer apilog.L(`I: `,`退出`)
-
for loop_num < 24*5 {
- select{
- case <- time.After(time.Second*time.Duration(res.Data.Heartbeat_interval)):
- case <- cancle:
- return
- }
+ <- time.After(time.Second*time.Duration(res.Data.Heartbeat_interval))
+ if !c.Bootmap.Check(`api.F_x25Kn`, func_id) {apilog.L(`I: `,`多余退出`);return}//有新会话产生,旧的退出
loop_num += 1
github.com/miekg/dns v1.1.38 // indirect
github.com/mitchellh/mapstructure v1.4.1 // indirect
github.com/qydysky/bili_danmu v0.5.7
- github.com/qydysky/part v0.3.10 // indirect
+ github.com/qydysky/part v0.3.11 // indirect
github.com/shirou/gopsutil v3.21.1+incompatible // indirect
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect
github.com/qydysky/part v0.3.9/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
github.com/qydysky/part v0.3.10 h1:hb6HcedujeqfKWmV1r30Wu9JYcajS0cM4bLFco63bIY=
github.com/qydysky/part v0.3.10/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
+github.com/qydysky/part v0.3.11 h1:GNNgS4lNWi2iw8E9HYKgje4+w0uwTb2+2XkKxAnFnjM=
+github.com/qydysky/part v0.3.11/go.mod h1:43opuciW71sZvOR67kye50jgMDSDrn/t6+LefNdlXPg=
github.com/qydysky/part/msgq v0.0.0-20201213031129-ca3253dc72ad h1:Jtzf509lQrkUMGTV0Sc6IDCAiR1VrBcHrIban7hpye4=
github.com/qydysky/part/msgq v0.0.0-20201213031129-ca3253dc72ad/go.mod h1:w32TkJNVtTJd4LOS09cq+4uYG6itcN2vsqw+slp44Rg=
github.com/qydysky/part/msgq v0.0.0-20201213120821-f36e49c32bba h1:1ew9dRpc0Rux0WkWeT/4AE15ynYWmL2D7onJEJIFOB8=