🎨 修改一些error处理 & 减少不必要的fatal

This commit is contained in:
Akiba
2022-03-24 19:48:28 +08:00
parent e26f3c1080
commit 0d421f943b
4 changed files with 19 additions and 13 deletions

View File

@@ -2,6 +2,7 @@ package client
import (
"encoding/json"
"errors"
"fmt"
"github.com/Akegarasu/blivedm-go/api"
"github.com/Akegarasu/blivedm-go/packet"
@@ -54,8 +55,10 @@ func (c *Client) Connect() error {
return nil
}
func (c *Client) Start() {
c.sendEnterPacket()
func (c *Client) Start() error {
if err := c.sendEnterPacket(); err != nil {
return err
}
go func() {
for {
msgType, data, err := c.conn.ReadMessage()
@@ -73,14 +76,16 @@ func (c *Client) Start() {
}
}()
go c.startHeartBeat()
return nil
}
func (c *Client) ConnectAndStart() error {
err := c.Connect()
if err != nil {
if err := c.Connect(); err != nil {
return err
}
if err := c.Start(); err != nil {
return err
}
c.Start()
return nil
}
@@ -96,23 +101,24 @@ func (c *Client) startHeartBeat() {
pkt := packet.NewHeartBeatPacket()
for {
if err := c.conn.WriteMessage(websocket.BinaryMessage, pkt); err != nil {
log.Fatal(err)
log.Error(err)
}
log.Debug("send: HeartBeat")
time.Sleep(30 * time.Second)
}
}
func (c *Client) sendEnterPacket() {
func (c *Client) sendEnterPacket() error {
rid, err := strconv.Atoi(c.roomID)
if err != nil {
log.Fatal("error roomID")
return errors.New("error roomID")
}
pkt := packet.NewEnterPacket(0, rid)
if err := c.conn.WriteMessage(websocket.BinaryMessage, pkt); err != nil {
log.Fatal(err)
return err
}
log.Debugf("send: EnterPacket: %v", pkt)
return nil
}
func getDanmuInfo(roomID string) (*DanmuInfo, error) {

View File

@@ -102,7 +102,7 @@ func (c *Client) Handle(p packet.Packet) {
if _, ok := knownCMDMap[cmd]; ok {
return
}
log.Infof("cmd %s, %s", p.Body, cmd)
log.Debugf("cmd %s, %s", p.Body, cmd)
log.WithField("data", string(p.Body)).Warn("unknown cmd")
}
case packet.HeartBeatResponse:

View File

@@ -2,7 +2,7 @@ package packet
import (
"encoding/json"
"log"
log "github.com/sirupsen/logrus"
)
type Enter struct {
@@ -35,7 +35,7 @@ func NewEnterPacket(uid int, roomID int) []byte {
func (e *Enter) Json() []byte {
marshal, err := json.Marshal(e)
if err != nil {
log.Fatalln("NewEnterPacket JsonMarshal failed", err)
log.Error("NewEnterPacket JsonMarshal failed", err)
}
return marshal
}

View File

@@ -56,7 +56,7 @@ func NewPacketFromBytes(data []byte) Packet {
packLen := binary.BigEndian.Uint32(data[0:4])
// 校验包长度
if int(packLen) != len(data) {
log.Fatal("error packet")
log.Error("error packet")
}
pv := binary.BigEndian.Uint16(data[6:8])
op := binary.BigEndian.Uint32(data[8:12])