golang游戏服务器 - tgf系列课程02
2023-12-13 03:37:48
环境准备和服务创建
课程介绍了TGF框架的前期的准备工作,启动一个websocket网关服务,和大厅逻辑节点。
文章最后附有项目案例地址和视频教程地址,下期预告等信息
安装第三方软件
tgf框架的服务发现依赖于Consul,所以我们需要先安装并启动Consul
官网安装
:访问官网下载对应的包,开发环境中可以直接启动单机模式
Window启动命令
.\consul.exe agent -dev -node=consul -config-dir=F:\server_tool\consul\default.json
json配置文件,启动之后会默认自动生成
Docker安装
访问DockerHub 参考文档安装即可
更多第三方软件安装,可以查看我们的文档
创建项目
根据开发规范,创建所需目录和项目目录
service
网关节点,大厅节点
-
gate
- 网关节点,持有客户端连接,转发客户端请求 hall
- 大厅节点,业务逻辑节点,处理业务逻辑
common
通用项目
-
service目录
- 节点接口,通常以_service结尾. api目录
- 存放我们自动生成的协议文件,该目录我们不需要修改
kit
工具箱
-
cmd
- 存放工具箱的运行脚本 proto
- pb相关的运行文件,不包含.proto文件
初始化项目
对项目进行初始化
-
1.创建work工作空间
-
我们在根目录命令行中执行
go work init
命令,创建一个work工作空间
2.初始化所有项目的mod管理
-
切换到各个项目的目录下, 执行
go mod init xxxx/xxx/xxx/xxx
xxx为自定义参数
3.导入tgf框架
-
切换到common项目,执行
go get -u github.com/thkhxm/tgf
命令导入框架
创建服务节点
gate,hall节点的创建和启动
gate服务
启动service函数:
func Startup() {
r := rpc.NewRPCServer().
WithGatewayWS("8443", "/tgf", nil).
WithCache(tgf.CacheModuleClose).
Run()
<-r
}
hall服务
创建service:
type service struct {
}
func (s *service) Login(ctx context.Context, args *rpc.Args[*pb.LoginRequest], reply *rpc.Reply[*pb.LoginResponse]) (err error) {
log.DebugTag("hall", "hall login")
return
}
func (s *service) GetName() string {
return "hall"
}
func (s *service) GetVersion() string {
return "1.0.0"
}
func (s *service) Startup() (bool, error) {
log.DebugTag("hall", "hall startup")
return true, nil
}
func (s *service) Destroy(sub rpc.IService) {
log.DebugTag("hall", "hall destroy")
}
func NewService() rpc.IService {
return &service{}
}
启动service函数:
r := rpc.NewRPCServer().
WithService(NewService()).
WithGatewayWS("8443", "/tgf", nil).
WithCache(tgf.CacheModuleClose).
WithRandomServicePort(8010, 8020).
Run()
<-r
下期预告
下一节课我们会讲解如何使用robot发起请求,进行登录和请求操作.
视频教程
文章来源:https://blog.csdn.net/thkhxm/article/details/134889786
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!