62 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|