|
|
# nnet
|
|
|
|
|
|
基于 Go 1.25.4 和 gnet 2.9.5 实现的高性能、功能完备的网络库。
|
|
|
|
|
|
## 特性
|
|
|
|
|
|
- ✅ 多协议支持:TCP、UDP、WebSocket、Unix Domain Socket、TLS、串口等
|
|
|
- ✅ 现代化的路由系统:支持字符串匹配、帧头匹配、帧数据匹配
|
|
|
- ✅ 灵活的中间件系统:全局中间件、路由级中间件
|
|
|
- ✅ 协议版本管理:支持单协议多版本,灵活的版本识别策略
|
|
|
- ✅ 连接管理:连接分组、跨连接操作
|
|
|
- ✅ Session管理:支持内存、文件、Redis等存储策略
|
|
|
- ✅ 内置客户端:支持TCP、UDP、WebSocket等协议
|
|
|
- ✅ 插件系统:可扩展的插件架构
|
|
|
- ✅ 指标监控:Prometheus格式的Metrics
|
|
|
- ✅ 健康检查:内置健康检查接口
|
|
|
|
|
|
## 安装
|
|
|
|
|
|
```bash
|
|
|
go get github.com/noahlann/nnet
|
|
|
```
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
### 服务器示例
|
|
|
|
|
|
```go
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
"github.com/noahlann/nnet/pkg/nnet"
|
|
|
)
|
|
|
|
|
|
func main() {
|
|
|
// 创建服务器
|
|
|
server, err := nnet.NewServer(&nnet.Config{
|
|
|
Addr: "tcp://:8080",
|
|
|
})
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
// 注册路由
|
|
|
server.Router().RegisterString("/hello", func(ctx nnet.Context) error {
|
|
|
return ctx.Response().WriteString("Hello, nnet!")
|
|
|
})
|
|
|
|
|
|
// 启动服务器
|
|
|
if err := server.Start(); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
### 客户端示例
|
|
|
|
|
|
```go
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
"github.com/noahlann/nnet/pkg/nnet"
|
|
|
"time"
|
|
|
"fmt"
|
|
|
)
|
|
|
|
|
|
func main() {
|
|
|
// 创建客户端
|
|
|
client := nnet.NewClient(&nnet.ClientConfig{
|
|
|
Addr: "tcp://localhost:8080",
|
|
|
})
|
|
|
|
|
|
// 连接服务器
|
|
|
if err := client.Connect(); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
// 发送请求
|
|
|
response, err := client.Request([]byte("hello"), 5*time.Second)
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
fmt.Println("Response:", string(response))
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## 文档
|
|
|
|
|
|
完整的文档知识库位于 [docs/kb/](docs/kb/) 目录。
|
|
|
|
|
|
### 快速链接
|
|
|
|
|
|
- [知识库索引](docs/kb/README.md) - 完整的文档索引
|
|
|
- [架构设计](docs/kb/design/ARCHITECTURE.md) - 架构设计文档
|
|
|
- [设计方案](docs/kb/design/DESIGN.md) - 完整设计方案
|
|
|
- [需求文档](docs/kb/requirements/REQUIREMENTS.md) - 需求文档
|
|
|
- [代码结构](docs/kb/development/CODE_STRUCTURE.md) - 代码结构说明
|
|
|
- [项目状态](docs/kb/status/PROJECT_STATUS.md) - 项目状态文档
|
|
|
|
|
|
### 用户指南
|
|
|
|
|
|
- [路由系统示例](docs/kb/user-guide/ROUTER_EXAMPLES.md) - 路由系统详尽示例
|
|
|
- [协议帧说明](docs/kb/user-guide/PROTOCOL_FRAME_EXPLANATION.md) - 协议帧头字段概念详解
|
|
|
- [客户端连接池](docs/kb/user-guide/CLIENT_POOL.md) - 客户端连接池使用指南
|
|
|
- [多仓库发布](docs/kb/user-guide/MULTI_REPO_SETUP.md) - 多仓库发布指南
|
|
|
- [域名配置](docs/kb/user-guide/DOMAIN_SETUP.md) - 域名配置指南(已弃用)
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
```
|
|
|
nnet/
|
|
|
├── cmd/ # 命令行工具和示例
|
|
|
├── internal/ # 内部实现
|
|
|
├── pkg/ # 对外暴露的包
|
|
|
├── examples/ # 示例代码
|
|
|
├── test/ # 测试代码
|
|
|
└── docs/ # 文档
|
|
|
```
|
|
|
|
|
|
## 开发状态
|
|
|
|
|
|
🚧 **开发中** - 项目正在积极开发中,API可能会有变化。
|
|
|
|
|
|
## 贡献
|
|
|
|
|
|
欢迎贡献!请查看 [CONTRIBUTING.md](CONTRIBUTING.md) 了解详情。
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
[MIT License](LICENSE)
|
|
|
|
|
|
## 链接
|
|
|
|
|
|
- **模块路径**: `github.com/noahlann/nnet`
|
|
|
- **GitHub**: https://github.com/noahlann/nnet
|
|
|
- **Gitee**: https://gitee.com/noahlann/nnet (镜像)
|
|
|
|