From 22a2997df4b46e3d907313cfe052fcb00b539e36 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sun, 21 Jul 2024 08:06:11 +0800 Subject: [PATCH] 1 --- websocket/Recoder.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/websocket/Recoder.go b/websocket/Recoder.go index d6ee7db..241e0dc 100644 --- a/websocket/Recoder.go +++ b/websocket/Recoder.go @@ -14,6 +14,7 @@ import ( ctx "github.com/qydysky/part/ctx" file "github.com/qydysky/part/file" funcCtrl "github.com/qydysky/part/funcCtrl" + pslice "github.com/qydysky/part/slice" ) var ( @@ -126,6 +127,8 @@ func Play(filePath string) (s *Server, close func()) { }, }) + sendData := pslice.New[byte]() + for !ctx.Done(sg) { select { case <-timer.C: @@ -135,6 +138,8 @@ func Play(filePath string) (s *Server, close func()) { cu.Add(1) + sendData.Reset() + sendData.Append([]byte("[")) for !ctx.Done(sg) { if data == nil { if data, e = f.ReadUntil([]byte{'\n'}, 70, humanize.MByte); e != nil && !errors.Is(e, io.EOF) { @@ -148,15 +153,23 @@ func Play(filePath string) (s *Server, close func()) { tIndex := bytes.Index(data, []byte{','}) if d, _ := strconv.ParseFloat(string(data[:tIndex]), 64); d < float64(cu.Load()) { danmuIndex := tIndex + bytes.Index(data[tIndex+2:], []byte{','}) + 3 - s.Interface().Push_tag(`send`, Uinterface{ - Id: 0, //send to all - Data: data[danmuIndex:], - }) + if sendData.Size() > 1 { + sendData.Append([]byte(",")) + } + sendData.Append(data[danmuIndex:]) data = nil } else { break } } + sendData.Append([]byte("]")) + + if sendData.Size() > 2 { + s.Interface().Push_tag(`send`, Uinterface{ + Id: 0, //send to all + Data: sendData.GetPureBuf(), + }) + } } }() -- 2.39.2