警告
本文最后更新于 2021-01-02 ,文中内容可能已过时。
全局配置脑图
写一个全局配置是为了更方便的维护项目已经修改代码参数,创建 conf/zinx.json
文件,配置信息如下:
1
2
3
4
5
6
7
{
"Name" : "demo server" ,
"Host" : "127.0.0.1" ,
"IPVersion" : "tcp4" ,
"TcpPort" : 8999 ,
"MaxConn" : 3
}
创建 utils/globalobj.go
文件,代码编写如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// GlobalObj 用来映射 zinx.json
type GlobalObj struct {
TcpServer ziface . IServer //全局Server对象
IPVersion string // IP版本
Host string //当前服务器主机IP
TcpPort int //当前服务器主机监听端口号
Name string //当前服务器名称
Version string //当前服务版本号
MaxPacketSize uint32 //都需数据包的最大值
MaxConn int //当前服务器主机允许的最大链接个数
}
// 定义一个全局的对象
var GlobalObject * GlobalObj
//读取用户的配置文件
func ( g * GlobalObj ) Reload () {
data , err := ioutil . ReadFile ( "conf/zinx.json" )
if err != nil {
panic ( err )
}
err = json . Unmarshal ( data , & GlobalObject )
if err != nil {
panic ( err )
}
}
/*
提供init方法,默认加载
*/
func init () {
//初始化GlobalObject变量,设置一些默认值
GlobalObject = & GlobalObj {
Name : "ZinxServerApp" ,
Version : "V4" ,
TcpPort : 8999 ,
Host : "0.0.0.0" ,
MaxConn : 1000 ,
MaxPacketSize : 4096 ,
}
//从配置文件中加载一些用户配置的参数
GlobalObject . Reload ()
}
server.go中NewServer替换
1
2
3
4
5
6
7
8
9
10
// NewServer 实例Server
func NewServer ( name string ) ziface . IServer {
return & Server {
Name : utils . GlobalObject . Name ,
IPVersion : utils . GlobalObject . IPVersion ,
IP : utils . GlobalObject . Host ,
Port : utils . GlobalObject . TcpPort ,
Router : nil ,
}
}
在server.go中Start()方法中开始加上日志信息:
1
2
3
4
5
fmt . Printf ( "[START] Server name: %s,listenner at IP: %s, Port %d is starting\n" , s . Name , s . IP , s . Port )
fmt . Printf ( "[Zinx] Version: %s, MaxConn: %d, MaxPacketSize: %d\n" ,
utils . GlobalObject . Version ,
utils . GlobalObject . MaxConn ,
utils . GlobalObject . MaxPacketSize )
拷贝v3中的代码到v4,在v4目录下创建 conf/zinx.json
,将上面的zinx.json内容复制进去,分别运行server.go和client.go即可看到服务日志开始打印。
测试