diff --git a/.vscode/launch.json b/.vscode/launch.json index f4adc576..ee8175dc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -19,7 +19,7 @@ "request": "launch", "mode": "auto", "cwd": "${workspaceFolder}", - "args": ["-port=27777"], + "args": ["-port=27000"], "program": "${workspaceFolder}/logic" } diff --git a/common/data/session/session.go b/common/data/session/session.go index caace875..82fe700b 100644 --- a/common/data/session/session.go +++ b/common/data/session/session.go @@ -3,13 +3,14 @@ package session import ( "blazing/cool" "context" + "fmt" "strings" "time" "github.com/gogf/gf/v2/os/gctx" ) -var session = "blazing:session:" +var sessionprx = "blazing:session:" // GetSession 通过给定的键从缓存中获取会话数据。 // 该函数主要执行以下操作: @@ -24,18 +25,18 @@ func GetSession(t1 string) (userid uint32, err error) { // 从缓存中获取与键 t2 关联的数据。这里假设 cool.CacheManager 已经初始化,并且 Get 方法可用。 // 此处不处理 err,可能是因为上层调用者期望处理这个错误,或者在特定上下文中,错误被视为可接受。 - t, err := cool.CacheManager.Get(context.Background(), session+t2) + t, err := cool.CacheManager.Get(context.Background(), sessionprx+t2) userid = t.Uint32() return } func SaveSession(session string, userid string) error { - err := cool.CacheManager.Set(gctx.New(), session+strings.Trim(session, " "), userid, time.Hour*24) + err := cool.CacheManager.Set(gctx.New(), sessionprx+strings.Trim(session, " "), userid, time.Hour*24) // gsvc.SetRegistry(etcd.New(`127.0.0.1:2379`)) //t, err := cool.CacheManager.Contains(context.Background(), strings.Trim(session, " ")) - // //fmt.Println("前端获取", session, t, err) + fmt.Println("前端获取", session, err) // if t { // return nil // } diff --git a/logic/controller/login.go b/logic/controller/login.go index ba85870f..e72efb00 100644 --- a/logic/controller/login.go +++ b/logic/controller/login.go @@ -13,7 +13,7 @@ import ( // 处理命令: 1001 func (h Controller) Login(data login.LoginSidInfo, c gnet.Conn) []byte { //这个时候player应该是空的 - fmt.Println(data.CheakSession()) //检查结构体 + //fmt.Println(data.CheakSession()) //检查结构体 if tt := data.CheakSession(); tt { //说明sid正确 diff --git a/logic/service/login/CommendSvrInfo.go b/logic/service/login/CommendSvrInfo.go index bc2e674e..8e97345e 100644 --- a/logic/service/login/CommendSvrInfo.go +++ b/logic/service/login/CommendSvrInfo.go @@ -7,7 +7,10 @@ type CommendSvrInfo struct { IsVip uint32 // 建议为0 ServerInfoLen uint32 `struc:"sizeof=ServerList"` // 服务器信息长度 ServerInfo ServerList []ServerInfo // 服务器具体信息 - Reversed uint32 // 保留字段 + FriendInfoLen uint32 `struc:"sizeof=FriendInfo"` + FriendInfo []FriendInfo // 好友id + BlackInfoLen uint32 `struc:"sizeof=BlackInfo"` + BlackInfo []BlackInfo // 黑名单id } func NewCommendSvrInfo() *CommendSvrInfo { @@ -17,7 +20,9 @@ func NewCommendSvrInfo() *CommendSvrInfo { IsVip: 0, ServerInfoLen: 0, ServerList: make([]ServerInfo, 0), - Reversed: 0, + FriendInfo: make([]FriendInfo, 0), + BlackInfo: make([]BlackInfo, 0), + //Reversed: 0, } } @@ -39,3 +44,13 @@ type ServerInfo struct { func NewServerInfo() *ServerInfo { return &ServerInfo{} } + +type FriendInfo struct { + BlackInfo + TimePoke uint32 +} + +type BlackInfo struct { + Userid uint32 + //TimePoke uint32 +} diff --git a/logic/service/login/LoginSidInfo.go b/logic/service/login/LoginSidInfo.go index f86ec6cc..b4c5b559 100644 --- a/logic/service/login/LoginSidInfo.go +++ b/logic/service/login/LoginSidInfo.go @@ -22,10 +22,10 @@ func (l *LoginSidInfo) CheakSession() bool { t1 := hex.EncodeToString(l.Sid) t, err := session.GetSession(t1) - fmt.Println("后端获取", string(l.Sid), t, err) - if t == l.Head.UserID { - return true + if err != nil { + return false } + fmt.Println("后端获取", t1, t, err) - return false + return t == l.Head.UserID } diff --git a/login/main.go b/login/main.go index dfebbdba..99428716 100644 --- a/login/main.go +++ b/login/main.go @@ -1,9 +1,6 @@ package main import ( - "encoding/hex" - "fmt" - _ "github.com/gogf/gf/contrib/nosql/redis/v2" "github.com/panjf2000/gnet/v2" @@ -59,7 +56,7 @@ func recv(c gnet.Conn, data handler.TomeeHeader) { ret.ServerList = append(ret.ServerList, *lofin) tt := core.Pack(data, ret) - fmt.Println(hex.EncodeToString(tt)) + //fmt.Println(hex.EncodeToString(tt)) c.Write(tt) } diff --git a/modules/blazing/controller/admin/login.go b/modules/blazing/controller/admin/login.go index ae5fd1ae..ce94e31f 100644 --- a/modules/blazing/controller/admin/login.go +++ b/modules/blazing/controller/admin/login.go @@ -62,7 +62,11 @@ func (c *BlazingController) GetSession(ctx context.Context, req *SessionReq) (re res.Code = 400 res.Msg = err.Error() } - + if res1 == nil { + res.Code = 400 + res.Msg = err.Error() + return + } accountID := res1.ID retsid, sid, err := biazing_service.GetSessionId(accountID) if err != nil { diff --git a/modules/blazing/service/login.go b/modules/blazing/service/login.go index 55e85589..bc6c0791 100644 --- a/modules/blazing/service/login.go +++ b/modules/blazing/service/login.go @@ -41,12 +41,12 @@ func (s *LoginService) GetSessionId(accountID uint) (string, string, error) { binary.BigEndian.PutUint32(buf2, uint32(accountID)) //fmt.Printf("小端序: %v (十六进制: %x)\n", buf2, buf2) // 输出: [252 255 255 255] (0xFCFFFFFF) - + ttid, _ := hex.DecodeString(tt) //fmt.Println(bytes, "随机字节") - ret := append(bytes, hex.EncodeToString([]byte(tt))...) + ret := append(buf2, ttid...) ret = append(ret, bytes...) - return string(ret), tt, nil + return hex.EncodeToString(ret), tt, nil // /t1. // 以上过程只需全局一次,且应在生成ID之前完成。 } diff --git a/public/config/ServerR.xml b/public/config/ServerR.xml index a35c9650..66019d47 100644 --- a/public/config/ServerR.xml +++ b/public/config/ServerR.xml @@ -9,7 +9,7 @@ - + diff --git a/public/login/Login.swf b/public/login/Login.swf index 57ab4b5f..1ddc3ccf 100644 Binary files a/public/login/Login.swf and b/public/login/Login.swf differ