zoukankan      html  css  js  c++  java
  • Gonet2 游戏server框架解析之Agent(3)

    客户端消息在Agent中的预处理流程。
    这里写图片描写叙述

    Agent定义好的三种请求:

    //api.go
    var RCode = map[int16]string{
        0:  "heart_beat_req",         // 心跳包..
        1:  "heart_beat_ack",         // 心跳包回复
        10: "user_login_req",         // 登陆
        11: "user_login_succeed_ack", // 登陆成功
        12: "user_login_faild_ack",   // 登陆失败
        13: "client_error_ack",       // 客户端错误
        30: "get_seed_req",           // socket通信加密使用
        31: "get_seed_ack",           // socket通信加密使用
    }

    上面这段是 api.go中截取的。定义了协议号和相应消息的名称。


    以req结尾的是请求,ack结尾的是回复。

    //api.go
    var Handlers map[int16]func(*Session, *packet.Packet) []byte
    
    func init() {
        Handlers = map[int16]func(*Session, *packet.Packet) []byte{
            0:  P_heart_beat_req,
            10: P_user_login_req,
            30: P_get_seed_req,
        }
    }

    还是在api.go中,定义了与请求相应的处理方法,这些方法记录在Handlers中。方法的定义在文件client_handler/handle.go中。

    在协议号大于1000的还有一个分支,消息被封装成了一个Game_Frame,之后转发到了Gameserver,这个对象是由grpc框架生成的。服务的接口以及数据格式定义例如以下:

    syntax = "proto3";
    
    package proto;
    
    // game definition
    service GameService {
        rpc Stream(stream Game.Frame) returns (stream Game.Frame);  // 透传消息, 双向流
    }
    
    message Game {
        enum FrameType {
            Message = 0;
            Register = 1;
            Unregister = 2;
            Kick = 3;
            Ping = 4;   // for testing
        }
        message Frame {
            FrameType Type=1;
            bytes Message=2;
            int32 UserId = 3;
        }
    }

    在Gameserver中,有这样一个介绍。

    游戏server对外仅仅提供一个接口, 即:
    rpc Stream(stream Game.Frame) returns (stream Game.Frame);

    所以,接下来。就要到Gameserver的分析了。

  • 相关阅读:
    Mybatis--->第五节注解完成增删改查
    Mybatis--->新增新功能报错,以前都正常,突然报错
    Mybatis--->limit分页查询
    固定套路--->log4j日志运用-Maven
    Mybatis第三节优化别名--->user
    Mybatis入门第二节--->优化
    Mybatis 报错 java.io.IOException: Could not find resource mybatis-config.xml
    学习Java的第十二天
    学习Java的第十一天
    学习Java的第十天
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7039371.html
Copyright © 2011-2022 走看看