golang游戏服务器 - tgf系列课程02

环境准备和服务创建

课程介绍了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发起请求,进行登录和请求操作.

视频教程

golang游戏服务器 - tgf系列课程02
项目地址
项目文档
项目案例文档
知乎博客
CSDN专栏
B站教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

点云从入门到精通技术详解100篇-针对三维点云分类神经网络模型的不可感知对抗攻击

目录 前言 国内外研究现状 三维点云分类神经网络 三维点云传统攻击方法

C/C++ 实现动态资源文件释放

当我们开发Windows应用程序时&#xff0c;通常会涉及到使用资源&#xff08;Resource&#xff09;的情况。资源可以包括图标、位图、字符串等&#xff0c;它们以二进制形式嵌入到可执行文件中。在某些情况下&#xff0c;我们可能需要从可执行文件中提取自定义资源并保存为独立的…

vivado时序方法检查7

TIMING-25 &#xff1a; 千兆位收发器 (GT) 上的时钟波形无效 收发器输出管脚 <pin_name> 上或连接到该管脚的信号线上定义的时钟 <clock_name> 的波形与收发器设置不一 致&#xff0c; 或者缺少参考时钟定义。自动衍生时钟的周期为 <PERIOD> &#xf…

物联网后端个人第十四周总结

物联网方面进度 1.登陆超时是因为后端运行的端口和前端监听的接口不一样&#xff0c;所以后端也没有报错&#xff0c;将二者修改一致即可 2.登录之后会进行平台的初始化&#xff0c;但是初始化的时候会卡住,此时只需要将路径的IP端口后边的内容去掉即可 3.阅读并完成了jetlinks…

通过误差改变控制的两种策略

如果反馈误差越来越大&#xff0c;需要改变调节方向以减小误差并实现更好的控制。以下是两种常见的调节方向改变的方法&#xff1a; PID控制器中的积分限制&#xff1a;在PID控制中&#xff0c;积分项可以用来减小稳态误差。然而&#xff0c;当反馈误差持续增大时&#xff0c;积…

浪潮信息:数字化转型的策略与实践

在数字化浪潮的推动下&#xff0c;浪潮信息正致力于将计算创新推向新的高度。作为科技发展的排头兵&#xff0c;浪潮信息深知算力的重要性&#xff0c;因此不断探索前所未有的解决方案。在这个过程中&#xff0c;浪潮信息的研发人员和科技工作者如同探险家&#xff0c;勇敢地迎…

RocketMQ安装和使用

RocketMQ快速入门 下载RocketMQ 下载地址 环境要求 Linux64位系统 JDK1.8(64位) 安装RocketMQ 解压 unzip rocketmq-all-4.4.0-bin-release.zip启动RocketMQ 启动NameServer # 1.启动NameServer nohup sh bin/mqnamesrv & # 2.查看启动日志 tail -f ~/logs/rocke…

学会用bash在linux写脚本 (二)

接着上一章继续 数值的对比 判断语句 循环语句 22.5 比较、对比、判断 在写脚本时&#xff0c;有时需要做一些比较&#xff0c;例如&#xff0c;两个数字谁大谁小&#xff0c;两个字符串是否相同等。 做对比的表达式有[]、[[]]、test&#xff0c;其中[]和 test这两种表达式的…

如何通过3000个传感器帮助大型大学附属医院实现远程环境监测?

得益于ELPRO提供的可扩展、可信赖和可靠的环境监测解决方案&#xff0c;一家领先的大学研究医院系统在COVID-19新冠肺炎大流行初始迅速为员工远程工作做好了准备。 在本案例研究中&#xff0c;您将了解大城市的一家大型大学附属医院如何做到&#xff1a; 建立了远程温度控制数…

身份统一管理创新与优化 ——华为云OneAccess应用身份管理服务的2023年

2023年&#xff0c;随着云计算、物联网、人工智能等技术的快速发展&#xff0c;企业面临着数字化转型的巨大挑战与机遇。身份统一管理是企业数字化转型的基础&#xff0c;也是业务发展的关键。如何高效、安全、灵活地实现身份统一管理&#xff0c;成为企业亟待解决的首要课题。…

解决MySQL字段名与关键字冲突

如果字段名与MySQL内部关键字相同&#xff0c;可能会导致语法错误、数据访问问题甚至系统崩溃。 1、避免使用MySQL关键字作为字段名。 2、使用反引号&#xff08;backticks&#xff09;&#xff1a; 如果使用一个与MySQL关键字相同的字段名&#xff0c;可以使用反引号将其括起…

boost-字符串处理-判断-查找-裁剪-删除-替换-分割-合并

文章目录 1.判断1.1.equals1.2.all1.3.starts_with1.4.ends_with1.5.contains 2.大小写转换3.字符串删除4.字符串替换5.字符串查找6.字符串修剪7.字符串分割8.字符串合并9.总结 1.判断 判别式函数和分类函数大多数都是以is_开头&#xff0c;这些函数如下&#xff1a; 判别式函…

ElasticSearch之线程池

ElasticSearch节点可用的CPU核的数量&#xff0c;通常可以交给ElasticSearch来自行检测和判定&#xff0c;另外可以在elasticsearch.yml中显式指定。样例如下&#xff1a; node.processors: 2如下表格中的processors即CPU核的数量。 线程池的列表 线程池名称类型线程数量队列…

屏蔽百度首页推荐和热搜的实战方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

电视节目中活动灭灯系统是如何实现的

活动灭灯系统主要用于各种需要亮灯或灭灯的活动节目&#xff0c;如招聘灭灯、相亲灭灯等。有多种灯光颜色供选择&#xff0c;本设备通过按钮灯软件组合实现&#xff0c;用户可以自己设置亮灯或灭灯规则。 软件功能&#xff1a; 1、后台统一控制亮灯&#xff0c;重新开始下轮…

华为交换机基本配置

一、配置时间 sys ntp-service unicast-server 192.168.1.1 ntp-service unicast-server 192.168.1.2 clock timezone UTC add 8 clock timezone CST add 08:00:00 undo ntp-service disable q手动设置一个时间 clock datetime 13:43:00 2023-10-10save ysys保存&#xff01;保…

某60内网渗透之域管权限维持[金票利用]

内网渗透 文章目录 内网渗透域管权限维持【金票利用】实验目的实验环境实验工具实验原理实验内容域管权限维持【金票利用】实验步骤攻击域管权限维持【金票利用】 实验目的 让学员通过该系统的练习主要掌握:利用金票来维持域管理员的权限。 实验环境 操作机 Windows 7,域…

微信小程序 - 格式化操作 moment.js格式化常用使用方法总结大全

格式化操作使用 1. 首先&#xff0c;下载一个第三方库 moment npm i moment --save 注&#xff1a;在微信小程序中无法直接npm 下载 导入 的&#xff08;安装一个就需要构建一次&#xff09; 解决&#xff1a;菜单栏 --> 工具 --> 构建 npm 点击即可&#xff08;会…

线性回归模型标准公式

用一组特征 x ( i ) { x^{(i)}} x(i)来预测或估计一个响应变量 y ( i ) y^{(i)} y(i)&#xff0c;公式如下&#xff1a; y ( i ) θ T x ( i ) ϵ ( i ) y^{(i)} \theta^T x^{(i)} \epsilon^{(i)} y(i)θTx(i)ϵ(i) 各名词解释&#xff1a; y ( i ) y^{(i)} y(i)&#xf…

Docker import 命令

docker import&#xff1a;从归档文件中创建镜像。 语法&#xff1a; docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]OPTIONS说明&#xff1a; -c &#xff1a;应用docker指令创建镜像&#xff1b; -m &#xff1a;提交时的说明文字&#xff1b; 实例&#xff1a…