123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package ws
- import (
- "encoding/json"
- "errors"
- "fmt"
- "gadmin/config"
- "gadmin/internal/admin/consts"
- "gadmin/internal/admin/gm_rpc/rpc_share"
- "gadmin/utility/player"
- "leafstalk/covenant/msg"
- "strconv"
- "time"
- "github.com/gorilla/websocket"
- "github.com/sirupsen/logrus"
- )
- var (
- errUserNotFound = Msg{
- Type: consts.SocketQueryUser,
- Code: consts.CodePanicErr,
- Msg: "用户查询失败..",
- }
- )
- func (client *Client) HandlerReqMsg(reqMsg ReqMsg) {
- if reqMsg.Type != consts.SocketHeartBeat {
- logrus.WithField("from", "HandlerReqMsg").Infof("ws收到消息 sid:%d, admin_id:%v, 请求数据: %+v", client.Id, client.claims.ID, reqMsg)
- }
- switch reqMsg.Type {
- // 心跳
- case consts.SocketHeartBeat:
- client.lastHeart = time.Now().Unix()
- client.WriteResp([]byte(`{"type":1, "pong":1}`))
- // 查询用户
- case consts.SocketQueryUser:
- playerId, _ := strconv.ParseInt(reqMsg.Data, 10, 64)
- if playerId == 0 {
- client.msgChan <- errUserNotFound
- }
- //err := gate.SendToWorld(0, &msg.GmPlayer{
- // MsgId: fmt.Sprintf("qu:%d:%d", client.Id, playerId),
- // PlayerID: playerId,
- // OperatorId: client.claims.ID,
- //})
- //
- //if err != nil {
- // logrus.WithField("from", "gate.SendToWorld").Errorln(err)
- // client.msgChan <- Msg{
- // Type: consts.SocketQueryUser,
- // Code: consts.CodePanicErr,
- // Msg: "用户查询失败:" + err.Error(),
- // }
- //}
- DB, err := player.GetDBByUserId(playerId)
- if err != nil {
- client.msgChan <- Msg{
- Type: consts.SocketQueryUser,
- Code: consts.CodePanicErr,
- Msg: "用户查询失败 GetDBByUserId:" + err.Error(),
- }
- return
- }
- if DB <= 0 {
- client.msgChan <- Msg{
- Type: consts.SocketQueryUser,
- Code: consts.CodePanicErr,
- Msg: "玩家服务器信息获取失败",
- }
- return
- }
- data := &msg.GmPlayer{
- MsgId: fmt.Sprintf("qu:%d:%d", client.Id, playerId),
- PlayerID: playerId,
- OperatorId: client.claims.ID,
- }
- var resp *msg.ResponseGmPlayer
- res, err := config.GmNats.GmRequest(DB, "GmPlayer", data)
- if err != nil {
- client.msgChan <- Msg{
- Type: consts.SocketQueryUser,
- Code: consts.CodePanicErr,
- Msg: "用户查询失败 nats查询出错:" + err.Error(),
- }
- return
- }
- if err = json.Unmarshal(res, &resp); err != nil {
- client.msgChan <- Msg{
- Type: consts.SocketQueryUser,
- Code: consts.CodePanicErr,
- Msg: "用户查询失败 nats Unmarshal出错:" + err.Error(),
- }
- return
- }
- rpc_share.LogChan <- rpc_share.LogMsg{
- MsgID: data.MsgId,
- Data: resp,
- }
- }
- }
- func (client *Client) WriteResp(data []byte) (err error) {
- client.Lock.Lock()
- defer client.Lock.Unlock()
- if client.lastHeart < time.Now().Unix()-300 {
- client.c.Close()
- return errors.New("timeout")
- }
- err = client.c.WriteMessage(websocket.TextMessage, data)
- return
- }
|