
GoLang服务器
陽光微涼
这个作者很懒,什么都没留下…
展开
-
Zinx-V0.1基础server
ZinxV0.1-基础server实现了简单的读写功能1.zinx最基本的两个模块ziface和znet ziface主要是存放一些Zinx框架的全部模块的抽象层接口类,Zinx框架的最基本的是服务类接口iserver,定义在ziface模块中。 znet模块是zinx框架中网络相关功能的实现,所有网络相关模块都会定义在znet模块中。2.ziface抽象了server的方法:启...原创 2019-05-25 00:25:16 · 206 阅读 · 0 评论 -
Zinx下MMO游戏具体实现-01地图格子模块和AOI管理模块
Zinx应用-MMO多人在线游戏AOI兴趣点算法首先绘制一个2D的地图1.实现格子类1.1.创建一个地图中的格子类,并实现初始化函数type Grid struct { //格子ID GID int //格子的左边边界坐标 MinX int //格子的右边边界的坐标 MaxX int //格子的上边边界的坐标 MinY int //格子的下边边界的坐标 MaxY i...原创 2019-05-29 00:34:33 · 673 阅读 · 0 评论 -
Zinx-V0.10连接属性设置
Zinx-V0.10连接属性设置当我们在使用链接处理的时候,希望和链接绑定一些用户的数据,或者参数。那么我们现在可以把当前链接设定一些传递参数的接口或者方法。1.在抽象层IConnection添加给链接添加链接配置的接口type IConnection interface { ...... //设置链接属性 SetProperty(key string, value interfac...原创 2019-05-29 00:32:11 · 330 阅读 · 1 评论 -
Zinx下MMO游戏具体实现-02玩家模块和世界模块
Zinx下MMO游戏具体实现1.构建项目目录core:存放算法、核心功能conf:zinx框架配置文件pb:存放用来与前端交互的proto文件apis:存放用户自定义的路由业务,一个msgID对应一个业务main.go:zinx-server开发的编程流程2.实现一个Player玩家模块2.1.在core中创建Player结构体并实现初始化函数type Player struct...原创 2019-05-30 23:09:29 · 452 阅读 · 0 评论 -
数据传输协议protocol buffer
数据传输协议protocol bufferGoogle Protocol Buffer (简称 Protobuf)是google旗下的一款轻便高效的结构化数据存储格式,平台无关、语言无关、可扩展,可用于通讯协议和数据存储等领域。所以很适合用做数据存储和作为不同应用,不同语言之间相互通信的数据交换格式,只要实现相同的协议格式即同一 proto文件被编译成不同的语言版本,加入到各自的工程中去。这样不...原创 2019-05-30 23:08:21 · 2075 阅读 · 0 评论 -
Zinx-V0.6多路由的模式
Zinx-V0.6多路由的模式不同的Message应该对应不同的业务处理方式1.消息管理模块(支持多路由调度管理–拥有一个Router集合属性) MsgHandler模块1.1.抽象层 type IMsgHandler interface { //添加路由到map集合中 AddRouter(msgID uint32, router IRouter) //调度路由, 根据MsgI...原创 2019-05-27 23:30:46 · 226 阅读 · 0 评论 -
Zinx-V0.2简单的连接封装与业务绑定
Zinx-V0.2-简单的连接封装与业务绑定指定一个conn的处理业务1.定义抽象IConnectiontype IConnection interface { //启动链接 Start() //停止链接 Stop() //获取链接ID GetConnID() uint32 //获取conn的原生socket套接字 GetTCPConnection() *...原创 2019-05-27 22:06:37 · 167 阅读 · 0 评论 -
Zinx-V0.9链接管理
Zinx-V0.9链接管理我们要为Zinx框架增加链接个数的限定,如果超过一定量的客户端个数,Zinx为了保证后端的及时响应,而拒绝链接请求。1.在抽象层添加链接管理模块的一些方法type IConnManager interface { //添加链接 Add(conn IConnection) //删除链接 Remove(connID uint32) //根据链接ID得到链接 ...原创 2019-05-27 20:36:57 · 250 阅读 · 0 评论 -
Zinx-V0.8消息队列及多任务机制
Zinx-V0.8消息队列及多任务机制之前的zinx框架 是1个链接对应1个Reader和1个Writer, 1个消息对应一个Handler,如果说1个客户端发送10个消息 1w客户端 就10w消息,—> 10w Handler的go程来处理业务,cpu就会在10w handler之间进行切换,影响性能,这时就需要制定一个worker处理业务的工作池的机制。1.在MsgHandl...原创 2019-05-27 20:35:59 · 439 阅读 · 0 评论 -
Zinx-V0.7的读写分离模型
Zinx-V0.7的读写分离模型将zinx的读写模型变为:把Reader中的消息通过channel传递给Writer,使读写分离1.在Connection中添加一个channel用来给Writer传递数据,再添加一个channel用来传递Connection的关闭信息type Connection struct { ...... msgchan chan []byte isq...原创 2019-05-27 20:34:12 · 200 阅读 · 0 评论 -
binary包、bytes包:指定字节序列的读写
将data数据以指定字节序列写入w中Write(w io.Writer, order ByteOrder, data interface{}) error例如:var num uint32 = 100//创建一个存放二进制的字节缓冲buff := bytes.NewBuffer([]byte{})//num 写进buffer中if err := binary.Write(buff,...转载 2019-05-26 21:40:13 · 400 阅读 · 0 评论 -
Zinx-V0.5消息封装和处理tcp粘包
Zinx-V0.5消息封装和处理tcp粘包1.将Request中的data、len再进行封装,封装成一个message,其中包含id、data、len1.1.抽象层zifacetype IMessage interface { GetDataLen() uint32 //获取消息数据段长度 GetMsgId() uint32 //获取消息ID GetData() []byte //获取...原创 2019-05-26 00:54:02 · 444 阅读 · 0 评论 -
Zinx-V0.4增添全局配置代码实现
Zinx-V0.4增添全局配置代码实现1.创建一个全局配置的类type GlobalObj struct { /* server */ Host string //当前监听的IP Port int //当前的监听Port Name string //当前zinxserver的名称 Version string //当前框架的版本号 MaxPackageSi...原创 2019-05-25 00:26:53 · 217 阅读 · 0 评论 -
Zinx-V0.3框架基础路由模块
Zinx框架基础路由模块1.IRequest 把客户端请求的连接信息 和 请求的数据,放在一个叫Request的请求类里,这样的好处是我们可以从Request里得到全部客户端的请求信息,也为我们之后拓展框架有一定的作用,一旦客户端有额外的含义的数据信息,都可以放在这个Request里1.1.zifacetype IRequest interface { //得到当前的请求的链接 ...原创 2019-05-25 00:26:33 · 295 阅读 · 0 评论 -
Zinx下MMO游戏具体实现-03世界聊天、上线的位置信息同步、移动位置信息广播、玩家下线
Zinx下MMO游戏具体实现-03世界聊天、上线的位置信息同步、移动位置信息广播、玩家下线1.世界聊天1.1.在msg.proto中添加一个message Talk//聊天数据(client 发送给 server)message Talk{ string Content=1;}运行build.go生成go文件1.2.在创建player的时候,给conn配置一个链接属性,作用是从c...原创 2019-05-31 21:33:19 · 454 阅读 · 0 评论