mirror of
https://github.com/AynaLivePlayer/blivedm-go.git
synced 2025-12-06 19:32:49 +08:00
fix concurrent error
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"net/http"
|
||||
"regexp"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/AynaLivePlayer/blivedm-go/api"
|
||||
@@ -30,6 +31,7 @@ type Client struct {
|
||||
cancel context.CancelFunc
|
||||
done <-chan struct{}
|
||||
api api.IApi
|
||||
lock sync.RWMutex
|
||||
}
|
||||
|
||||
// NewClient 创建一个新的弹幕 client
|
||||
@@ -43,6 +45,7 @@ func NewClient(roomID int) *Client {
|
||||
done: ctx.Done(),
|
||||
cancel: cancel,
|
||||
api: nil,
|
||||
lock: sync.RWMutex{},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,9 +158,11 @@ func (c *Client) heartBeatLoop() {
|
||||
case <-c.done:
|
||||
return
|
||||
case <-time.After(30 * time.Second):
|
||||
c.lock.Lock()
|
||||
if err := c.conn.WriteMessage(websocket.BinaryMessage, pkt); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
c.lock.Unlock()
|
||||
log.Debug("send: HeartBeat")
|
||||
}
|
||||
}
|
||||
@@ -192,6 +197,8 @@ func (c *Client) UseDefaultHost() {
|
||||
|
||||
func (c *Client) sendEnterPacket() error {
|
||||
pkt := packet.NewEnterPacket(c.Uid, c.Buvid, c.RoomID, c.token)
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.conn.WriteMessage(websocket.BinaryMessage, pkt); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user