tgf v1.0.9 Help

服务器请求

s2s rpc请求

代码范例

RPC接口

func (s *service) GetBattleUserData(ctx context.Context, args *usermodels.LoadBattleUserRequest, reply *usermodels.LoadBattleUserResponse) (err error) { //do something }

上述代码,展示了一个简单的rpc接口,在此之前,我们需要遵循服务器协议的规范,,并且在业务节点的service中声明这个函数即可.

调用接口

我们通过生成协议接口工具得到服务器rpc协议请求的结构化代码. user_service.RegisterUser

我们模拟登陆成功之后,调用注册用户的rpc请求,以下是逻辑伪代码:

func (m *Manager) DoLogin(ctx context.Context, account, password string) (errorCode uint32, userId string) { accountModel, _ := m.accountDataManager.Get(account) defer func() { userId = accountModel.UserId }() if accountModel == nil || accountModel.Password != password { //errorCode = errorcodes.AccountNotFound log.DebugTag("login", "user login account not found") accountModel = &logic.AccountModel{ Account: account, Password: password, UserId: util.GenerateSnowflakeId(), } m.accountDataManager.Set(accountModel, account) rpc.SendRPCMessage(ctx, userservice.RegisterUser.New(&usermodels.RegisterUserRequest{UserId: accountModel.UserId}, &rpc.EmptyReply{})) return } return }
关注这一行代码
`rpc.SendRPCMessage(ctx, userservice.RegisterUser.New(&usermodels.RegisterUserRequest{UserId: accountModel.UserId}, &rpc.EmptyReply{}))`

使用rpc.SendRPCMessage函数发起了一次rpc请求,传入用户的context ,和生成的rpc请求协议userservice.RegisterUser.

更多高级用法可以查看RPC通讯方式文档

Last modified: 02 March 2024