Files
mir-godot/service/framework/controller/intranet/message.go
MakerYang a902dd3de7 new
2024-08-06 18:30:21 +08:00

62 lines
1.5 KiB
Go

/**
#*****************************************************************************
# @author MakerYang
# @site mir2.makeryang.com
#*****************************************************************************
*/
package IntranetController
import (
"Service/framework/package/socket"
"encoding/json"
"github.com/gin-gonic/gin"
"github.com/gookit/color"
"github.com/gorilla/websocket"
"log"
)
func MessageIndex(c *gin.Context) {
conn, err := SocketPackage.SocketGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
log.Println("[controller:intranet:message:index:error]", color.Yellow.Text("websocket upgrade error:"+err.Error()))
return
}
if SocketPackage.Message.Status == false {
SocketPackage.Message.User = make(map[*websocket.Conn]bool)
SocketPackage.Message.Status = true
}
SocketPackage.Message.User[conn] = true
log.Println("[controller:intranet:message:index]", color.Green.Text("game server connection socket..."))
for {
_, data, err := conn.ReadMessage()
if err != nil {
_ = conn.Close()
delete(SocketPackage.Message.User, conn)
return
}
SocketPackage.Callback(data)
jsonFormat := SocketPackage.MessageFormat{}
err = json.Unmarshal(data, &jsonFormat)
if err == nil {
if jsonFormat.Command != "" {
for user := range SocketPackage.Message.User {
err := user.WriteMessage(websocket.TextMessage, data)
if err != nil {
_ = user.Close()
delete(SocketPackage.Message.User, user)
}
}
}
}
}
}