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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

环境准备和服务创建

课程介绍了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站教程

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“golang游戏服务器 - tgf系列课程02” 的相关文章

thinkphp实现分页功能的方法是什么 - 编程语言

这篇文章主要介绍“thinkphp实现分页功能的方法是什么”,在日常操作中,相信很多人在thinkphp实现分页功能的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp实现分页功能的方法是什么”的疑惑有所帮助!接下...

PYTHON前端几个框架的比较

一、概述   我准备做一个个人站把这些年积累的文章整理下、汇总下最近python用的多就想看看万能的python现在能不能做网站了后台当然我们知道是有的前端之前是没有的结果这一搜还真有了几个框架   Streamlit、Brython、remi、pywebio   我的需求就是常规个人站然后需...

作业随笔-指针

指针数组数组指针函数指针二维数组传参函数指针传参函数指针解引用,调用指向函数指针的指针#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> /* int main() { int arr[5];//arr是一个5个元素的整型数组 i...

动力节点王鹤SpringBoot3学习笔记——第六章 远程访问@HttpExchange[SpringBoot 3]

远程访问是开发的常用技术,一个应用能够访问其他应用的功能。Spring Boot提供了多种远程访问的技术。 基于HTTP协议的远程访问是支付最广泛的。Spring Boot3提供了新的HTTP的访问能力,通过接口简化HTTP远程访问,类似Feign功能。Spring包装了底层HTTP客户的访问细节。...

Python中的迭代器怎么创建 - 开发技术

这篇文章主要介绍“Python中的迭代器怎么创建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的迭代器怎么创建”文章能帮助大家解决问题。什么是迭代器什么是python迭代器呢? 举一个最简单的例子:list1&n...

POJ 2083 Fractal (分形&分治)

Fractal http://poj.org/problem?id=2083 Time Limit:  1000MS Memory Limit: 30000K Description A fractal is an object or...