]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Fix 监听直播间中断 #120
authorqydysky <qydysky@foxmail.com>
Wed, 17 Jul 2024 16:51:44 +0000 (00:51 +0800)
committerqydysky <qydysky@foxmail.com>
Wed, 17 Jul 2024 16:51:44 +0000 (00:51 +0800)
bili_danmu.go
go.mod
go.sum

index 21342fe087b25bb92c2199d683e35ba4bbbb15c9..46fb29a81cb3a19dc262e86ff62dfccf66cf8ac3 100644 (file)
@@ -254,6 +254,7 @@ func entryRoom(mainCtx context.Context, danmulog *part.Log_interface, common *c.
        // 对每个弹幕服务器尝试
        F.Get(common).Get(`WSURL`)
        aliveT := time.Now().Add(3 * time.Hour)
+       heartbeatmsg, heartinterval := F.Heartbeat()
        for i, exitloop := 0, false; !exitloop && i < len(common.WSURL) && time.Now().Before(aliveT); {
                v := common.WSURL[i]
                //ws启动
@@ -261,7 +262,7 @@ func entryRoom(mainCtx context.Context, danmulog *part.Log_interface, common *c.
                u, _ := url.Parse(v)
                ws_c, err := ws.New_client(&ws.Client{
                        Url:               v,
-                       TO:                35 * 1000,
+                       TO:                (heartinterval + 5) * 1000,
                        Proxy:             common.Proxy,
                        Func_abort_close:  func() { danmulog.L(`I: `, `服务器连接中断`) },
                        Func_normal_close: func() { danmulog.L(`I: `, `服务器连接关闭`) },
@@ -288,7 +289,9 @@ func entryRoom(mainCtx context.Context, danmulog *part.Log_interface, common *c.
                        continue
                }
                if ws_c.Isclose() {
-                       danmulog.L(`E: `, "连接错误", ws_c.Error())
+                       if err := ws_c.Error(); err != nil {
+                               danmulog.L(`E: `, "连接错误", err)
+                       }
                        i += 1
                        continue
                }
@@ -342,7 +345,6 @@ func entryRoom(mainCtx context.Context, danmulog *part.Log_interface, common *c.
                //30s获取一次人气
                go func() {
                        danmulog.L(`T: `, "获取人气")
-                       heartbeatmsg, heartinterval := F.Heartbeat()
                        for !ws_c.Isclose() {
                                wsmsg.Push_tag(`send`, &ws.WsMsg{
                                        Msg: heartbeatmsg,
@@ -448,6 +450,10 @@ func entryRoom(mainCtx context.Context, danmulog *part.Log_interface, common *c.
                                cancel()
                        }
 
+                       if err := ws_c.Error(); err != nil {
+                               danmulog.L(`E: `, "连接错误", err)
+                       }
+
                        cancelfunc()
                        time.Sleep(time.Second)
                }
diff --git a/go.mod b/go.mod
index 4e4ce88750f7244255d5ef49be33e81223e74ba8..1acacf51b18459941b65166a4c873dec3349fb32 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.22.2
 require (
        github.com/gotk3/gotk3 v0.6.4
        github.com/mdp/qrterminal/v3 v3.2.0
-       github.com/qydysky/part v0.28.20240708182044
+       github.com/qydysky/part v0.28.20240717164111
        github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
        github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
        golang.org/x/text v0.16.0
diff --git a/go.sum b/go.sum
index b4466facf03ef3945bb0e13728a78b7b00416b90..2bead95b435fda8053bff7a200bf7d2063ce5607 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -46,8 +46,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/qydysky/biliApi v0.0.0-20240707084224-dd146610f462 h1:SblV/m+0mx6QgH2YYvdjE5QxhyfE/EOQglJ1PGd3x3E=
 github.com/qydysky/biliApi v0.0.0-20240707084224-dd146610f462/go.mod h1:om024vfxALQ5vxsbaGoMm8IS0esLYBnEOpJI8FsGoDg=
-github.com/qydysky/part v0.28.20240708182044 h1:Av1SaUu/cvwGZ3xnsq9KabFjjn2Wwl+xjbAJbq6a2Iw=
-github.com/qydysky/part v0.28.20240708182044/go.mod h1:dgagZnPYRFZDbt7XJf7nADOJLoYwlebD9B8Z8g5aHhI=
+github.com/qydysky/part v0.28.20240717164111 h1:yDcDebBxSxvGb5YgFmd3k6kgvzGGq5LyNzyX9rn59vg=
+github.com/qydysky/part v0.28.20240717164111/go.mod h1:dgagZnPYRFZDbt7XJf7nADOJLoYwlebD9B8Z8g5aHhI=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
 github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
 github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=