websocket写入优化
This commit is contained in:
parent
2d055df276
commit
4b12211e85
14
main.go
14
main.go
|
@ -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)
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Reference in New Issue