You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

139 lines
3.5 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 (镜像)