package main import ( "context" "fmt" "google.golang.org/grpc" _ "pro2d/conf" "pro2d/protos/pb" "pro2d/utils" ) func Register(c pb.LoginClient, phone, password string) error { r, err := c.RegisterHandler(context.Background(), &pb.Register{ Phone: "17683852936", Password: "123456", Code: 0, }) if err != nil { return err } if r.Code != 0 { return fmt.Errorf("register fail") } utils.Sugar.Debug("register success") return nil } func Login(loginUri, token, uid string) { var opts []grpc.DialOption // 指定自定义认证 opts = append(opts, grpc.WithPerRPCCredentials(&utils.AuthToken{Token: token}), grpc.WithInsecure()) gameConn, err := grpc.Dial(loginUri, opts...) if err != nil { utils.Sugar.Errorf("game conn err: %v", err) return } defer gameConn.Close() client:= pb.NewGameClient(gameConn) var role *pb.Role loginRsp, err := client.LoginHandler(context.Background(), &pb.LoginReq{ Uid: uid, Device: "111111", }) if err != nil { utils.Sugar.Errorf("login error: %v", err) return } role = loginRsp.Role if loginRsp.Code != 0 { utils.Sugar.Debugf("login fail, role not exist") createRole, err := client.CreateRoleHandler(context.Background(), &pb.LoginReq{Uid: uid, Device: "11111"}) if err != nil { utils.Sugar.Errorf("create role err: %v", err) return } utils.Sugar.Debug("create role rsp: ", createRole.Code) role = createRole.Role } utils.Sugar.Debugf("login successful role: %v", role) } func main() { conn, err := grpc.Dial("localhost:8848", grpc.WithInsecure()) if err != nil { utils.Sugar.Errorf("conn err: %v", err) return } defer conn.Close() c := pb.NewLoginClient(conn) err = Register(c,"17683852936", "123456") //if err != nil { // utils.Sugar.Errorf("register err: %v", err) // return //} rsp, err := c.CreateTokenHandler(context.Background(), &pb.Account{ Phone: "17683852936", Password: "123456", }) if err != nil { utils.Sugar.Errorf("createtoken err: %v", err) return } if rsp.Code != 0 { utils.Sugar.Errorf("createtoken err" ) return } if len(rsp.GameService) >0 { Login(rsp.GameService[0].Address, rsp.Token, rsp.Uid) } }