websocket写入优化

This commit is contained in:
kercylan98 2023-05-19 11:48:53 +08:00
parent 2d055df276
commit 4b12211e85
3 changed files with 6 additions and 19 deletions

14
main.go
View File

@ -1,14 +0,0 @@
package main
import "github.com/kercylan98/minotaur/server"
// 无意义的测试main入口
func main() {
srv := server.New(server.NetworkWebsocket, server.WithMessageDiversion(3, 2))
srv.RegConnectionReceiveWebsocketPacketEvent(func(srv *server.Server, conn *server.Conn, packet []byte, messageType int) {
conn.Write(packet, messageType)
})
if err := srv.Run(":8999"); err != nil {
panic(err)
}
}

View File

@ -177,7 +177,7 @@ func (slf *Conn) writeLoop() {
return &connPacket{}
}, func(data *connPacket) {
data.packet = nil
data.websocketMessageType = -1
data.websocketMessageType = 0
},
)
defer func() {
@ -209,7 +209,7 @@ func (slf *Conn) writeLoop() {
}
var err error
if slf.IsWebsocket() {
if data.websocketMessageType == -1 {
if data.websocketMessageType <= 0 {
data.websocketMessageType = slf.server.websocketWriteMessageType
}
err = slf.ws.WriteMessage(data.websocketMessageType, data.packet)

View File

@ -263,9 +263,9 @@ func (slf *Server) Run(addr string) error {
if err := ws.SetReadDeadline(time.Now().Add(time.Second * 30)); err != nil {
panic(err)
}
messageType, packet, err := ws.ReadMessage()
if err != nil {
panic(err)
messageType, packet, readErr := ws.ReadMessage()
if readErr != nil {
panic(readErr)
}
if len(slf.supportMessageTypes) > 0 && !slf.supportMessageTypes[messageType] {
panic(ErrWebsocketIllegalMessageType)
@ -383,6 +383,7 @@ func (slf *Server) Shutdown(err error) {
log.Error("Server", zap.Any("network", slf.network), zap.String("listen", slf.addr),
zap.String("action", "shutdown"), zap.String("state", "exception"), zap.Error(err))
slf.closeChannel <- struct{}{}
panic(err)
} else {
log.Info("Server", zap.Any("network", slf.network), zap.String("listen", slf.addr),
zap.String("action", "shutdown"), zap.String("state", "normal"))