您的位置 首页 golang

Zinx – 基于Golang的轻量级并发服务器框架

Go 语言作为服务器开发的热门语言之一,目前已拥有众多的服务器应用框架。然而,应用在长链接领域的服务器框架较少,尤其是游戏服务器方面,没有一个比较全面的框架。

zinx

简介

Zinx,是 aceld 在 Github 和 Gitee 上开源的轻量级并发服务器框架,目前版本为 v1.0.0。

值得一提的是,Zinx 在 Youtube 和 B站 上提供了在线的视频教程,从零开始,一步步讲解整个框架的开发过程,对于学习 Go 语言和服务器相关有很高的学习参考价值。

Zinx 的具体适用领域包括:

  • 后端模块的消息中转
  • 长链接游戏服务器
  • Web框架中的消息处理插件

Zinx 的定位是代码简洁,可以让更多的开发者迅速地了解框架的内部细节,并且可以快速基于 Zinx DIY一款适合自己企业场景的模块。

zinx

使用

Zinx 的基本架构如下:

zinx

想要使用 Zinx,下载源码后,使用 Make 编译:

 $ cd zinx/
$ make  

启动 Demo Server

 $ cd example/zinx_server
$ ./server   

然后在另一终端启动 demo client 进行测试:

 $ cd example/zinx_client
$ ./client
==> Test Router:[Ping] Recv Msg: ID= 2 , len= 21 , data= DoConnection BEGIN... ==> Test Router:[Ping] Recv Msg: ID= 0 , len= 18 , data= ping...ping...ping 
==> Test Router:[Ping] Recv Msg: ID= 0 , len= 18 , data= ping...ping...ping
==> Test Router:[Ping] Recv Msg: ID= 0 , len= 18 , data= ping...ping...ping
...  

zinx

基于Zinx框架开发的服务器应用,主函数步骤比较精简,只需要3步:

  1. 创建server句柄
  2. 配置自定义路由及业务
  3. 启动服务
 func main() {
//1 创建一个server句柄
s := znet.NewServer()

//2 配置路由
s.AddRouter(0, &PingRouter{})

//3 开启服务
s.Serve()
}  

其中自定义路由及业务配置方式如下:

 import (
"fmt"
"github.com/aceld/zinx/ziface"
"github.com/aceld/zinx/znet"
)

//ping test 自定义路由
type PingRouter struct {
znet.BaseRouter
}

//Ping Handle
func (this *PingRouter) Handle(request ziface.IRequest) {
//先读取客户端的数据
fmt.Println("recv from client : msgId=", request.GetMsgID(), ", data=", string(request.GetData()))

    //再回写ping...ping...ping
err := request.GetConnection().SendBuffMsg(0, []byte("ping...ping...ping"))
if err != nil {
fmt.Println(err)
}
}  

可以通过配置文件的方式对应用进行配置:

 {
  "Name":"zinx v-0.10 demoApp",
  "Host":"127.0.0.1",
  "TcpPort":7777,
  "MaxConn":3,
  "WorkerPoolSize":10,
  "LogDir": "./mylog",
  "LogFile":"zinx.log"
}  

总结

Zinx 作为一个基于 Golang 的轻量级并发服务器框架,为相关领域和应用的开发提供了参考,能够为企业级的自定义框架提供基本蓝图。同时,其提供了同步的文字和视频教程,这对于进行相关学习的开发者而言十分有益。

zinx

文章来源:智云一二三科技

文章标题:Zinx – 基于Golang的轻量级并发服务器框架

文章地址:https://www.zhihuclub.com/100135.shtml

关于作者: 智云科技

热门文章

网站地图