Nano 开源项目教程
1. 项目的目录结构及介绍
Nano 项目的目录结构如下:
nano/
├── cmd/
│ ├── nano-server/
│ │ └── main.go
├── config/
│ ├── config.go
│ └── config.json
├── examples/
│ ├── chat/
│ ├── game/
│ └── simple/
├── internal/
│ ├── cluster/
│ ├── component/
│ ├── conf/
│ ├── log/
│ ├── network/
│ ├── remote/
│ ├── service/
│ └── session/
├── pkg/
│ ├── cluster/
│ ├── component/
│ ├── conf/
│ ├── log/
│ ├── network/
│ ├── remote/
│ ├── service/
│ └── session/
├── scripts/
│ ├── build.sh
│ └── deploy.sh
├── .gitignore
├── go.mod
├── go.sum
└── README.md
目录结构介绍
- cmd/: 包含项目的启动文件。
- nano-server/: 包含服务器的启动入口文件
main.go
。
- nano-server/: 包含服务器的启动入口文件
- config/: 包含项目的配置文件和配置相关的代码。
- config.go: 配置文件的解析和处理代码。
- config.json: 默认的配置文件。
- examples/: 包含一些示例项目,帮助用户理解如何使用 Nano。
- chat/: 聊天示例。
- game/: 游戏示例。
- simple/: 简单示例。
- internal/: 包含项目的内部实现代码,不对外暴露。
- pkg/: 包含项目的公共包,可以被其他项目引用。
- scripts/: 包含一些脚本文件,如构建和部署脚本。
- .gitignore: Git 忽略文件配置。
- go.mod: Go 模块文件。
- go.sum: Go 模块依赖的校验和。
- README.md: 项目说明文档。
2. 项目的启动文件介绍
Nano 项目的启动文件位于 cmd/nano-server/main.go
。这个文件是服务器的入口文件,负责初始化和启动服务器。
启动文件内容
package main
import (
"github.com/lonng/nano"
"github.com/lonng/nano/component"
"github.com/lonng/nano/examples/demo/chat/logic"
"github.com/lonng/nano/session"
)
func main() {
// 初始化组件
components := &component.Components{}
components.Register(logic.NewManager(), component.WithName("manager"))
// 启动服务器
nano.Listen(":3250", nano.WithIsWebsocket(true), nano.WithPipeline(func(s *session.Session) {
s.Push("onChat", &map[string]interface{}{
"content": "Welcome to Nano!",
})
}))
}
启动文件介绍
- 初始化组件: 通过
component.Components
注册和管理组件。 - 启动服务器: 使用
nano.Listen
方法启动服务器,并配置监听端口和 WebSocket 支持。
3. 项目的配置文件介绍
Nano 项目的配置文件位于 config/config.json
,并由 config/config.go
文件进行解析和处理。
配置文件内容
{
"server": {
"ws_addr": ":3250",
"rpc_addr": ":3260"
},
"log": {
"level": "debug",
"filename": "nano.log"
}
}
配置文件介绍
- server: 服务器配置。
- ws_addr: WebSocket 监听地址和端口。
- rpc_addr: RPC 监听地址和端口。
- log: 日志配置。
- level: 日志级别。
- filename: 日志文件名。
配置文件解析
config/config.go
文件负责解析和处理